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

时间:2009-08-20 18:53:52

标签: java regex string

假设有一个字符串......

String myString =  "my*big*string*needs*parsing";

我想要的是将字符串拆分为“my”,“big”,“string”等。 所以我试试

myString.split("*");

返回 java.util.regex.PatternSyntaxException:在索引0附近悬挂元字符'*'

*是正则表达式中的特殊字符,因此我尝试转义....

myString.split("\\*");

同样的例外。我想有人会知道一个快速的解决方案。感谢。

6 个答案:

答案 0 :(得分:21)

split("\\*")与我合作。

答案 1 :(得分:5)

一个转义\在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);
    }
}

输出:

  

我的大字符串
需要解析

答案 2 :(得分:1)

答案 3 :(得分:0)

myString.split("\\*");在Java 5上工作正常。你使用哪种JRE。

答案 4 :(得分:0)

您还可以使用StringTokenizer

 StringTokenizer st = new StringTokenizer("my*big*string*needs*parsing", "\*");
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

答案 5 :(得分:0)

这是因为split方法采用正则表达式,而不是普通字符串。

'*'字符表示匹配前一个字符零次或多次,因此单独指定它是无效的。

所以它应该被转义,如下面的

split("\\*")