按字符拆分字符串

时间:2013-05-13 14:57:58

标签: java regex string split character

我有一个案例,我正在做以下事情:

final String[] columns = row.split(delimiter.toString());

delimiter是一个角色。

当我需要通过提供\t作为分隔符来基于选项卡进行拆分时,这可以正常工作。但是,当我想在管道上拆分时,我传入|的分隔符,这不会按预期工作。

我已经阅读了几篇关于|如何是一个特殊字符的帖子,这意味着null或为空,因此它会分裂它遇到的每个字符,但是,我不想要这种行为。

我可以在我的代码中对此管道案例进行简单检查并解决问题:

if ("|".equals(delimiter.toString())) {
    columns = row.split("\\" + delimiter.toString());
}
else {
    columns = row.split(delimiter.toString());
} 

但我不知道是否有更简单的方法来解决这个问题。此外,还有其他特殊字符与|一样,需要考虑吗?

2 个答案:

答案 0 :(得分:18)

尝试:

import java.util.regex.Pattern;

...

final String[] columns = row.split(Pattern.quote(delimiter.toString()));

关于其他元字符,因为它们被调用,这里是String Literals教程的引用:

  

此API还支持许多影响模式匹配方式的特殊字符。

     

...

     

此API支持的元字符包括:<([{\ ^ - = $!|]})?* +。>

请参阅:

答案 1 :(得分:4)

  1. 您可以使用Apache Commons Lang中的StringUtils,它配备了接受纯文本而非正则表达式的方法:

    public static String[] split(String str, char separatorChar)
    public static String[] split(String str, String separatorChars)
    
  2. 您也可以使用StringTokenzier类,它不期望使用正则表达式作为分隔符。