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\?");