我是java编程的新手,遇到了StringTokenizer类。构造函数接受要拆分的字符串和另一个可选的分隔符字符串,在拆分原始字符串时,每个字符都被视为单独的分隔符。我想知道是否有任何方法可以分割传递regex作为分隔符的字符串。例如:
String s="34.5xy32.6y45.7x36xy"
StringTokenizer t=new StringTokenizer(s,"xy");
System.out.println(t.nextToken());
System.out.println(t.nextToken());
实际输出为:
34.5
32.6
然而,所需的输出是:
34.5
32.6y45.7x36
希望你们能帮忙。此外,如果StringTokenizer类无法实现,请提出一些解决方法。
提前谢谢。
p.s.有没有办法知道StringTokenizer当前在提供的集合中使用哪个字符作为分隔符?
如果您想要使用String.split()
,这将为您提供一个具有所需输出的数组。
它将接受您的输入,并将其拆分为与您提供的字符串完全匹配的字符串。StringTokenizer将围绕您提供的集合中的任何一个进行拆分,而不是正则表达式。
所以您将代码更改为:
String s="34.5xy32.6y45.7x36xy";
String[] splitString = s.split("xy");
System.out.println(splitString [0]);
System.out.println(splitString [1]);
对于更复杂的示例,您可能还希望对数组进行边界检查,以使您不会偏离数组的末尾
试试这个。
String s="34.5xy32.6y45.7x36xy";
final String SPLIT_STR = "xy";
final String mainStr = "34.5xy32.6y45.7x36xy";
final String[] splitStr = mainStr.split(SPLIT_STR);
System.out.println("First Index Of xy : " +
mainStr.indexOf(SPLIT_STR));
for(int index=0; index < splitStr.length; index++) {
System.out.println("Split : " + splitStr[index]);
}