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支持的元字符包括:
见:
StringUtils
,该语言配备了接受纯文本而非正则表达式的方法:
public static String[] split(String str, char separatorChar)
public static String[] split(String str, String separatorChars)
StringTokenzier
类,该类不希望使用正则表达式作为分隔符