2014-08-28 181 views
3

我想分割字符的字符串^,但它不起作用。我有以下代码:java分割不能正常工作^

String numberBase10 = "3.52*10^2"; 
String[] vector = numberBase10.split("^"); 
System.out.println("numberBase10: " + numberBase10); 
System.out.println("Vector[0]: " vector[0]); 

我得到以下输出:

numberBase10: 3.52*10^2 
Vector[0]: 3.52*10^2 

如果我尝试访问矢量[1]我得到的错误IndexOutOfArray。

我必须把任何转义字符,以便分裂与^

感谢

+0

可能重复http://stackoverflow.com/questions/3853726/java-regular-expressions-and:整个概念可以在一个不错的静态方法来打包-dollar-sign) – ControlAltDel 2014-08-28 20:33:17

+0

[Java中的split()方法在点(。)]上不起作用的可能重复(http://stackoverflow.com/questions/7935858/the-split-method-in-java-不 - 不工作的,一个点) – Raedwald 2014-09-03 07:12:59

回答

8

您需要\\^逃脱它。

^本身就是一个特殊字符,意思是否定(在一个组中,例如[^ abc],它与除abc以外的任何内容匹配)或者行首的锚点。

8

split需要正则表达式。 ^是用于字符串的开头的正则表达式所以需要转义

String[] vector = numberBase10.split("\\^"); 
1

^是一个特殊的字符作为正则表达式匹配一个锚,你需要逃避它 - 如果我改变,

String[] vector = numberBase10.split("\\^"); 

然后我得到

Vector[0]: 3.52*10 

没有其他代码更改。

2

java字符串处理分裂法对正则表达式进行操作,和“^”是一个正则表达式锚字符,因此必须进行转义把它当作一个普通字符:

String[] vector = numberBase10.split("\\^"); 
1

由于split()方法预期正则表达式,如果你想在一个确切的字符串分割,而不必担心它可能包含任何正则表达式的特殊字符,你应该先用

String regex = java.util.regex.Pattern.quote("^");

上再拆转义。

public static String[] splitRaw(String input, String separator) { 
    String regex = java.util.regex.Pattern.quote(separator); 
    return input.split(regex); 
} 
[Java正则表达式和美元符号(的