Meh*_*lik 2 java regex string split guava
我正在使用guava 21.0并尝试String通过提供正则表达式(\\d)来拆分.但是,我不确定为什么不工作.
如果我将正则表达式更改为任何非正则表达式(例如"a"),那么它可以正常工作.
这是代码:
public class SplitWithRegex {
public static Iterable<String> splitByRegex(String string, String regex){
return Splitter.on(regex).trimResults().omitEmptyStrings().split(string);
}
public static void main(String[] args) {
Iterable<String> itr = splitByRegex("abc243gca87asas**78sassnb32snb1ss22220220", "\\d");
for(String s : itr){
System.out.println(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
应用正则表达式时的结果:
abc243gca87asas**78sassnb32snb1ss22220220
任何帮助,将不胜感激.
你必须使用Splitter.onPattern("\\d+")而不是Splitter.on("\\d+").
这是 Splitter on方法的javadoc ,它就是这样说的:
返回使用给定固定字符串作为分隔符的拆分器.例如,Splitter.on(",").split("foo,bar,baz")返回包含["foo","bar,baz"]的迭代.
因此,分隔符被视为String文字,而不是regex因此,它不会String按预期分割.如果你想要基于正则表达式的拆分,那么你可以使用String的split方法或Splitter的onPattern方法,例如:
String[] tokens = "abc243gca87asas**78sassnb32snb1ss22220220".split("\\d+");
for(String token : tokens){
System.out.println(token);
}
public static Iterable<String> splitByRegex(String string, String regex){
return Splitter.onPattern(regex).trimResults().omitEmptyStrings().split(string);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |