字符串拆分问题使用“*”

让我们说有一个字符串……

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("\\*")