我确定我只是在这里忽略了一些东西......
是否有一种简单的方法可以在不应用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规则?我觉得我必须遗漏一些非常简单的东西。
答案 0 :(得分:8)
split
使用正则表达式作为参数。 *
是一个元字符,用于匹配正则表达式中的多个字符,您可以使用Pattern#quote
来避免解释字符
String[] result = s.split(Pattern.quote(delimiter));
答案 1 :(得分:1)
如果您使用Pattern
Pattern regex = Pattern.compile(s.charAt(4));
Matcher matcher = regex.matcher(yourString);
if (matcher.find()){
//do something
}
答案 2 :(得分:1)
您可以在分隔符上运行Pattern.quote,然后将其输入。这将创建一个字符串文字并转义任何正则表达式特定字符:
delimiter = Pattern.quote(delimiter);
答案 3 :(得分:0)
StringUtils.split(s, delimiter);
这会将分隔符视为一个字符,而不是像正则表达式那样使用它。
StringUtils
是ApacheCommons
库的一部分,它有很多有用的方法。值得一看,将来可以节省一些时间。
答案 4 :(得分:0)
只需将分隔符放在[]之间
String delimiter = "["+s.charAt(4)+"]";
String[] result = s.split(delimiter);
由于[]是正则表达式匹配[]之间的任何字符。您还可以指定分隔符列表,例如 [*,。+-]