String.split()*不*正则expression式?
由于String.split()
适用于正则expression式,所以这段代码如下:
String s = "str?str?argh"; s.split("r?");
收益率: [, s, t, , ?, s, t, , ?, a, , g, h]
什么是最优雅的方式来拆分这个string的r?
序列,使它产生[st, st, argh]
?
编辑 :我知道我可以逃避问题?
。 麻烦的是我不知道分隔符,我不想写一个escapeGenericRegex()
函数。
一个只使用Java SE API的通用解决scheme是:
String separator = ... s.split(Pattern.quote(separator));
您可以使用
StringUtils.split("?r")
来自commons-lang 。
逃离?
:
s.split("r\\?");
String[] strs = str.split(Pattern.quote("r?"));
这也是完美的:
public static List<String> splitNonRegex(String input, String delim) { List<String> l = new ArrayList<String>(); int offset = 0; while (true) { int index = input.indexOf(delim, offset); if (index == -1) { l.add(input.substring(offset)); return l; } else { l.add(input.substring(offset, index)); offset = (index + delim.length()); } } }
使用番石榴分stream器 。
尝试
String s = "str?str?argh"; s.split("r\?");