只是一个快速问题:
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,rutgers]
知道我在这里做错了什么吗?
尝试使用其中一个
split("\|")
split("[|]")
split(Pattern.quote("|"))
split("\Q|\E")
split
方法使用正则表达式作为参数,在正则表达式中|
表示OR,因此当前表达式表示空字符串或空串。
如果你想让|
变得简单,你需要逃离它。要做到这一点,你可以
- 在正则表达式引擎中,将
放在它之前,在字符串中,正则表达式引擎将被写为
"\|"
- 使用字符类
[...]
来转义像split("[|]")
这样的大多数regex元字符 - 或者用
\Q
和\E
包围你的特殊字符,这将使每个字符(无论它是否特殊)都成为简单的文字。此解决方案用于Pattern.quote("regex")
你可以试试这个:
String[] str= input.split("\|");
"|"
是一个特殊字符(OR),所以您需要使用slash \
来转义它。正如这里的回答未解析的|被解析为regex,意思是"空字符串或空字符串",
\Q&\E是正则表达式引号。
String[] splitInput = input.split("\Q|\E");
您可以通过StringTokenizer
完成
StringTokenizer st2 = new StringTokenizer(input , "|");
while (st2.hasMoreElements()) {
System.out.println(st2.nextElement());
}
默认的delimeter是" "
空间。
StringTokenizer st2 = new StringTokenizer(input );//it will split you String by `" "` space