Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按字符分割字符串_Java_Regex_String_Split_Character - Fatal编程技术网

Java 按字符分割字符串

Java 按字符分割字符串,java,regex,string,split,character,Java,Regex,String,Split,Character,我有一个案例,我正在做以下工作: final String[] columns = row.split(delimiter.toString()); 其中,分隔符是一个字符 当我需要通过提供\t作为分隔符来根据选项卡进行拆分时,这种方法可以很好地工作。但是,当我想在管道上拆分时,我会传入一个分隔符|,这并不能像预期的那样工作 我读过几篇关于|是一个特殊字符的文章,它意味着null或空,因此它在遇到的每个字符上都会分裂,不过,我不希望出现这种行为 我可以在我的代码中为这个管道案例做一个简单的检查

我有一个案例,我正在做以下工作:

final String[] columns = row.split(delimiter.toString());
其中,
分隔符
是一个字符

当我需要通过提供
\t
作为分隔符来根据选项卡进行拆分时,这种方法可以很好地工作。但是,当我想在管道上拆分时,我会传入一个分隔符
|
,这并不能像预期的那样工作

我读过几篇关于
|
是一个特殊字符的文章,它意味着null或空,因此它在遇到的每个字符上都会分裂,不过,我不希望出现这种行为

我可以在我的代码中为这个管道案例做一个简单的检查,然后绕过这个问题:

if ("|".equals(delimiter.toString())) {
    columns = row.split("\\" + delimiter.toString());
}
else {
    columns = row.split(delimiter.toString());
} 
但我不知道是否有更简单的方法来解决这个问题。另外,还有其他类似于
|
的特殊字符吗?我需要考虑这些字符吗?

试试:

import java.util.regex.Pattern;

...

final String[] columns = row.split(Pattern.quote(delimiter.toString()));
关于其他元字符,正如他们所说的,这里引用了本教程中的一段话:

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

此API支持的元字符包括:

见:

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

    public static String[] split(String str, char separatorChar)
    public static String[] split(String str, String separatorChars)
    
  • 您还可以使用
    StringTokenzier
    类,该类不希望使用正则表达式作为分隔符