[英]Java String Split on any character (including regex special characters)
我确定我只是在这里俯瞰...
有没有一种简单的方法可以在不应用RegEx规则的情况下在显式字符上拆分字符串?
例如,我收到一个带有动态定界符的字符串,我知道第5个字符定义了定界符。
String s = "This,is,a,sample";
为此,这很简单
String delimiter = String.valueOf(s.charAt(4));
String[] result = s.split(delimiter);
但是,当我使用的分隔符是特殊的RegEx字符时,此方法将无效:
String s = "This*is*a*sample";
那么...有没有办法在不尝试应用额外的RegEx规则的情况下将字符串拆分为显式字符? 我觉得我一定缺少一些简单的东西。
split
使用正则表达式作为其参数。 *
是一个元字符,用于匹配正则表达式中的零个或多个字符,可以使用Pattern#quote
来避免解释该字符
String[] result = s.split(Pattern.quote(delimiter));
您不必担心字符类型如果使用Pattern
Pattern regex = Pattern.compile(s.charAt(4));
Matcher matcher = regex.matcher(yourString);
if (matcher.find()){
//do something
}
您可以在输入分隔符之前在定界符上运行Pattern.quote 。这将创建字符串文字并转义任何正则表达式特定的字符:
delimiter = Pattern.quote(delimiter);
StringUtils.split(s, delimiter);
这样会将分隔符视为一个字符,而不是像正则表达式一样使用它。
StringUtils
是ApacheCommons
库的一部分,该库包含大量有用的方法。 值得一看,可以为您节省一些时间。
只需将您的分隔符放在[]之间
String delimiter = "["+s.charAt(4)+"]";
String[] result = s.split(delimiter);
由于[]是正则表达式匹配[]之间的任何字符。 您还可以指定一个定界符列表,例如[*,。+-]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.