java split无法正确使用^
我想拆分字符java split无法正确使用^,java,split,Java,Split,我想拆分字符^的字符串,但它不起作用。我有以下代码: 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
^
的字符串,但它不起作用。我有以下代码:
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],我会得到错误IndexOutFarray
我必须放置任何转义字符,以便split与^
一起工作
谢谢您需要使用
\\^
来转义它
^本身是一个特殊字符,表示否定(在组中,例如[^abc],它与除abc以外的任何内容匹配)或行开头的锚。
split
采用正则表达式^
是用于匹配正则表达式中字符串开头的锚点,因此需要转义
String[] vector = numberBase10.split("\\^");
^
作为正则表达式是一个特殊字符,您需要对其进行转义-如果我改为
String[] vector = numberBase10.split("\\^");
然后我得到
Vector[0]: 3.52*10
没有其他代码更改。java字符串拆分方法在正则表达式上运行,并且“^”是正则表达式中的定位字符,因此必须对其进行转义,以将其视为常规字符:
String[] vector = numberBase10.split("\\^");
由于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);
}
可能的重复可能的重复