不能使这个分隔符工作,java分裂

时间:2014-11-30 20:15:39

标签: java

我需要帮助为多个角色制作分隔符

我需要一个String分隔符 这些人物

  

()“;:,?!。

我试过了:

private String delimiter = "()\":;,?!.";
private String delimiter = "[()\":;,?!.]";
private String delimiter = "\\(\\)\"\\:\\;\\,\\?\\!\\.";

似乎我只能让它们一次工作一个.. 非常感谢任何见解。

如果重要的是这是它进入阵列的方式:

foo = line.split(delim);

3 个答案:

答案 0 :(得分:3)

如果您要拆分这些字符中的任何,您可以使用alternation|分隔每个字符。否则,只有当所有这些字符存在时才会拆分字符串。

String delimiter = "\\(|\\)|\"|\\:|\\;|\\,|\\?|\\!|\\.";

此外,您不必要地转义了几个字符,这也有效:

String delimiter = "\\(|\\)|\"|:|;|,|\\?|!|\\."; 

答案 1 :(得分:3)

几乎与nr。 3

@Test
public void delim() {
    String delimiter = "[\\(\\)\"\\:\\;\\,\\?\\!\\.]";
    String[] split = "Hello(World)How:are;You;doing,today?You!sir.I mean"
       .split(delimiter);
    System.out.println(Arrays.toString(split));
}

<强>输出

[Hello, World, How, are, You, doing, today, You, sir, I mean]

你错过了方括号。

为避免所有引用,您可以使用Pattern#quote

String delimiter = "[" + Pattern.quote("()\":;,?!.") + "]";
  

返回指定String的文字模式String。   此方法生成一个String,该String可用于创建与字符串s匹配的Pattern,就好像它是文字模式一样。   输入序列中的元字符或转义序列没有特殊含义。

答案 2 :(得分:2)

之间需要

|

delimiter = "\\(|\\)|\"|:|;|,|\\?|!|\\."