Java StringTokenizer在错误的分隔符上断开字符串
我使用java中的StringTokenizer对字符串进行标记,如下所示是我的代码Java StringTokenizer在错误的分隔符上断开字符串,java,Java,我使用java中的StringTokenizer对字符串进行标记,如下所示是我的代码 import java.util.StringTokenizer; public class Test { public static void main(String[] args) { String str = "key1@@@@@val1#####key2@@@@@val2#####key3@@@@@val3#####key4@@@@@val4###val4###val4####
import java.util.StringTokenizer;
public class Test {
public static void main(String[] args) {
String str = "key1@@@@@val1#####key2@@@@@val2#####key3@@@@@val3#####key4@@@@@val4###val4###val4#####key5@@@@@val5";
StringTokenizer st = new StringTokenizer(str,"#####");
while(st.hasMoreTokens()){
System.out.println(st.nextElement());
}
}
}
输出是
键1@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
键2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
键3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
键4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
瓦尔4
瓦尔4
键5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
实际上,分隔符是这样的,所以它在
预期产量
键1@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
键2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
键3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
键4@@@@val4val4val4
键5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
我知道我可以使用另一个分隔符,但我想知道这背后的确切原因。StringTokenizer根据提供的delim参数中的每个字符进行拆分
在您的例子中,您生成了一个StringTokenizer,它只根据
来自
。。。。delim参数中的字符是分隔标记的分隔符。
分隔符字符本身不会被视为标记
在StringTokenizer中,指定将用作分隔符的字符 你的线路
StringTokenizer st = new StringTokenizer(str, "#####");
相当于
StringTokenizer st = new StringTokenizer(str, "#");
要理解这个案例,你可以这样做
StringTokenizer st = new StringTokenizer(str, "#@");
delimeter是一个不被视为标记的字符,因此也可以将其称为delimeter,它将为您提供相同的输出。引用 delim参数中的字符是分隔标记的分隔符。分隔符本身不会被视为标记 因此,任何被称为delimeter的字符都将被完全忽略,剩下的字符串将被标记化 并引用同一来源的信息作为更好的选择:-
StringTokenizer是一个遗留类,尽管新代码中不鼓励使用它,但出于兼容性原因保留它。建议任何寻求此功能的人改用String的split方法或java.util.regex包
使用string.split如果要使用多个分隔符来分隔字符串,可以使用以下示例
String msg = "http://192.173.15.36:8084/";
StringTokenizer st = new StringTokenizer(msg, "://.");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
更多详细信息StringTokenizer是一个遗留类,出于兼容性原因保留了它,尽管新代码中不鼓励使用它。建议任何寻求此功能的人改用String的split方法或java.util.regex包-