字符串拆分问题使用“*”
让我们说有一个字符串……
String myString = "my*big*string*needs*parsing";
我想要的是将字符串拆分为“我的”,“大”,“字符串”等等。所以我试试
myString.split("*");
返回java.util.regex.PatternSyntaxException:在索引0附近悬空元字符’*’
*
是正则表达式中的特殊字符,所以我尝试转义….
myString.split("\\*");
同样的例外。 我想有人会知道一个快速的解决方案。 谢谢。
split("\\*")
与我合作。
一个转义\
不会在Mac OSX上的Java 6中做到这一点,因为\
是为\b \t \n \f \r \'\"
和\\
保留的。你有什么似乎对我有用:
public static void main(String[] args) { String myString = "my*big*string*needs*parsing"; String[] a = myString.split("\\*"); for (String b : a) { System.out.println(b); } }
输出:
我的
大
串
需求
解析
应该完全按照你的需要做。
myString.split("\\*");
在Java 5上运行正常。您使用哪种JRE?
您还可以使用StringTokenizer 。
StringTokenizer st = new StringTokenizer("my*big*string*needs*parsing", "\*"); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }
发生这种情况是因为split方法采用正则表达式,而不是普通字符串。
‘*’字符表示匹配前一个字符零次或多次,因此单独指定它是无效的。
所以它应该被转义,如下所示
split("\\*")