我想为字符^
拆分一个字符串,但它不起作用。我有以下代码:
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
如果我尝试访问vector [1],我会收到错误IndexOutOfArray。
我必须放置任何转义字符,以便拆分适用于^
?
由于
答案 0 :(得分:8)
您需要使用\\^
转义它。
^本身就是一个特殊的字符,意思是否定(在一个组中,如[^ abc],它匹配除了abc之外的任何东西)或者是行开头的锚。
答案 1 :(得分:8)
split
采用正则表达式。 ^
是用于匹配正则表达式中字符串开头的锚点,因此需要进行转义
String[] vector = numberBase10.split("\\^");
答案 2 :(得分:2)
java字符串拆分方法在正则表达式上运行,' ^'是正则表达式中的锚字符,因此必须将其转义为将其视为常规字符:
String[] vector = numberBase10.split("\\^");
答案 3 :(得分:1)
^
是一个特殊字符作为正则表达式,你需要将其转义 - 如果我改为,
String[] vector = numberBase10.split("\\^");
然后我得到
Vector[0]: 3.52*10
没有其他代码更改。
答案 4 :(得分:1)
由于split()
方法需要正则表达式,如果要拆分精确字符串而不必担心它可能包含的任何正则表达式特殊字符,则应首先使用
String regex = java.util.regex.Pattern.quote("^");
然后分开regex
。整个概念可以用一个很好的静态方法打包:
public static String[] splitRaw(String input, String separator) {
String regex = java.util.regex.Pattern.quote(separator);
return input.split(regex);
}