Java - 拆分可以用管道分隔(“\\ I”),逗号分隔(“,”),分号分隔(“;”)和其他字符串的字符串

时间:2014-02-21 11:22:49

标签: java regex string split delimiter

我正在尝试拆分一个字符串,该字符串可以由用户指定的任何字符或字符分隔,例如逗号,分号和/或管道。为了清洁和灵活,我理想地喜欢这些数组中的delim(无论是字符串,字符串还是正则表达式,无论是否有效)。

String[] stringsToSplit = {"alpha,bravo,charlie", "delta;echo;foxtrot", "golf|hotel|india", "juliet\nkilo\nlima"};
String[] acceptedNonEscapedDelims = {"," , ";"};
String[] acceptedEscapedDelims = {"\\|" , "\\n"};

我只能使用硬编码的正则表达式来使用它。

String[] values = string.split("\\n|\\||\\t|,|;");

将正则表达式存储在字符串数组中的方法是,以下操作不起作用。

String[] values = string.split(acceptedEscapedDelims[0]);

我可以为每个可能的分隔符创建一个布尔标志,并使用每个单独硬编码分割,但这种方法对我来说似乎是hackery。对于这么简单的事情,它也是看似狡猾的。如果单独处理每个分隔符,则需要进行大量特殊处理:例如。测试字符串是否包含逗号(在尝试使用逗号分割之前),否则您将获得单个字符的数组元素。

1 个答案:

答案 0 :(得分:1)

您只能使用单个字符进行拆分,因此请尝试使用[abcde](“其中一个”)表单而不是a|b|c|d|e。演示:

System.out.println( Arrays.toString( "a;b.c|d".split( "[;.|]") ));

输出:

[a, b, c, d]