将 split() 与"|"字符一起使用



只是一个快速问题:

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

最新更新