2. 使用 StringTokenizer
在 Java 中,字符串标记器允许将字符串分解为标记。
我们还可以获取字符串对象内的标记数。
例子
import java.util.StringTokenizer;
public class StringTokenizerExample {
public static void main(String[] args) {
StringTokenizer st =
new StringTokenizer("A StringTokenizer sample");
//get how many tokens are inside st object
System.out.println("Tokens count: " + st.countTokens());
//iterate st object to get more tokens from it
while (st.hasMoreElements()) {
String token = st.nextElement().toString();
System.out.println("Token = " + token);
}
}
}
注意:我们可以指定用于拆分字符串的分隔符。
在上面的示例中,我们将分隔符设置为空格 (")。
也可以使用带有多个分隔符的 StringTokenizer。
例子
import java.util.StringTokenizer;
public class StringTokenizerExample {
public static void main(String[] args) {
String url = "http://www.onitroad.com/javascript.html";
StringTokenizer multiTokenizer = new StringTokenizer(url, "://.-");
while (multiTokenizer.hasMoreTokens()) {
System.out.println(multiTokenizer.nextToken());
}
}
}
注意:在上面提到的例子中:,//,.,使用了分隔符。
在 Java 中拆分字符串
public class StringSplitTest {
public static void main(String[] arg) {
String str = "Welcome to onitroad";
String[] arrOfStr = str.split(":");
for (String a: arrOfStr)
System.out.println(a);
}
}
注意:更改正则表达式以获得不同的结果:
例如。
对于 ("o") 正则表达式,我们会喜欢这样的结果:
在 Java 中有很多方法可以拆分字符串。
最常见的方法是使用 split() 方法,该方法用于将字符串拆分为子字符串数组并返回新数组。
3.使用Pattern.compile()
此方法围绕模式的匹配拆分给定的输入序列。
参数为:输入要拆分的字符序列。
它返回通过围绕模式的匹配拆分输入来计算的字符串数组。
例子
import java.util.regex.Pattern;
public class PatternDemo {
private static String REGEX = ":";
private static String INPUT = "hello:onitroad:world";
public static void main(String[] args) {
Pattern pattern = Pattern.compile(REGEX);
String[] result = pattern.split(INPUT);
for (String data: result) {
System.out.println(data);
}
}
}
有时我们需要在编程中拆分一个字符串。
我们建议使用 String.split()、StringTokenizer 和 Pattern.compile() 方法。
1.使用String.split()
string split() 方法在给定正则表达式的匹配项周围断开给定字符串。
Java 中有两种 split() 方法的变体:
- 公共字符串拆分(字符串正则表达式)
此方法将正则表达式作为参数,并在此正则表达式正则表达式的匹配项周围断开给定的字符串。
默认限制为 0。
参数是:regex(一个定界正则表达式)。
它返回通过拆分给定字符串计算的字符串数组。
- 公共字符串拆分(字符串正则表达式,整数限制)
其参数是:regex(定界正则表达式)和 limit(控制应用模式的次数,因此影响结果数组的长度)。
这将返回通过围绕给定正则表达式的匹配拆分此字符串来计数的字符串数组。
例子
public class StringSplitTest {
public static void
ain(String[] arg) {
String str = "Hello:world:hello";
String split[] = str.split("e", 5);
for (String s: split)
System.out.println(s);
}
}
注意:更改正则表达式和限制以具有不同的输出:例如(":", 2)-输出将是 {Hello, world:hello}; (":", -2)-{Hello, world, hello} 等
让我们看另一个例子:
例子
public class StringSplitTest {
public static void main(String[] arg) {
String str = "What are you doing today?";
String split[] = str.split(" ", 0);
for (String s: split)
System.out.println(s);
}
}
注意:更改正则表达式和限制以获得另一个输出
将限制设置为零以返回与正则表达式匹配的所有字符串。
我们还可以使用正则表达式对多个字符使用字符串拆分。
public class StringSplitTest {
public static void main(String args[]) {
String s = " ;String; String; String; String, String; String;;String;String; String; String; ;String;String;String;String"; //String[] strs = s.split("[,\s\;]");
String[] strs = s.split("[,\;]");
System.out.println("Substrings length:" + strs.length);
for (int i = 0; i < strs.length; i++) {
System.out.println("Str[" + i + "]:" + strs[i]);
}
}
}
