繁体   English   中英

使用正则表达式作为StringTokenizer的分隔符

[英]using regular expression as delimiter with StringTokenizer

我是java编程新手,遇到了StringTokenizer类。 构造函数接受要拆分的字符串和另一个可选的定界符字符串,在拆分原始字符串时,每个字符都将被视为单独的定界符。 我想知道是否有任何方法可以拆分通过正则表达式作为分隔符的字符串。 例如:

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类无法实现,请提出一些解决方法。

提前致谢。

ps是否有办法知道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]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM