假设有一个字符串......
String myString = "my*big*string*needs*parsing";
我想要的是将字符串拆分为“my”,“big”,“string”等。 所以我试试
myString.split("*");
返回 java.util.regex.PatternSyntaxException:在索引0附近悬挂元字符'*'
*
是正则表达式中的特殊字符,因此我尝试转义....
myString.split("\\*");
同样的例外。我想有人会知道一个快速的解决方案。感谢。
答案 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("\\*")