只是一个简单的问题:
String input = "sam|y|rutgers";
String[] splitInput = input.split("|");
System.out.println(Arrays.toString(splitInput));
Output:
[, s, a, m, |, y, |, r, u, t, g, e, r, s]
我想拆分管道中的字符来获取 [SAM,Y,罗格斯]
知道我在这里做错了吗?
答案 0 :(得分:8)
尝试使用其中一个
split("\\|")
split("[|]")
split(Pattern.quote("|"))
split("\\Q|\\E")
split
方法使用正则表达式作为参数,而正则表达式|
表示OR,因此您当前的表达式表示空字符串或空字符串。
如果你想让|
简单的文字,你需要逃避它。要做到这一点,你可以
\
放在它前面的正则表达式引擎中,其中String将被写为"\\|"
。 [...]
来逃避大多数正则表达式元字符,例如split("[|]")
\\Q
和\\E
围绕您的特殊字符,这将使每个字符(无论是否特殊)简单文字。此解决方案用于Pattern.quote("regex")
。答案 1 :(得分:1)
你可以试试这个:
String[] str= input.split("\\|");
"|"
是一个特殊字符(OR),因此您需要使用slash \\
来转义它。正如已回答here 未转义|被解析为正则表达式,意思是“空字符串或空字符串”,
答案 2 :(得分:1)
您可以StringTokenizer
StringTokenizer st2 = new StringTokenizer(input , "|");
while (st2.hasMoreElements()) {
System.out.println(st2.nextElement());
}
默认分隔符为" "
空格。
StringTokenizer st2 = new StringTokenizer(input );//it will split you String by `" "` space
答案 3 :(得分:1)
\ Q& \ E是正则表达式引用。
String[] splitInput = input.split("\\Q|\\E");