先说一个案例:
对一个字符串“tom12jie1bill2lili21som12joy12212121hehe”进行分割,规则:以1或2为分隔符进行分割,如果有12,或21则把12或21看成一个分隔符进行分割,期望输出:(为了方便查看,加了行号)
1.tom 2.jie 3.bill 4.lili 5.som 6.joy 7. 8. 9. 10.hehe
最先看到首先想到的是正则表达式,虽然之前还专门做了正则的整理,结果还是试了半天(lll¬ω¬)。代码如下:
public static void main(String[] args) { String reg="tom12jie1bill2lili21som12joy12212121hehe"; String[] arr=reg.split("12|21|1|2") ; int i=0; for(String s:arr){ System.out.println(++i+"."+s); } }
需要注意的是,正则表达式"12|21|1|2",虽然大家是或的关系,但是还是有先后顺序的,不能乱放。必须把12和21放到前面。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
好了,接下来回到正题——文本换行分割。
java里文本的换行符常用的是"\n",但是也有很多人可能是考虑到linux和windows不同的原因,也会写"\r\n","\n\r","\r"。以前一般是去拿个样本试一下,今天终于忍不了了(+_+)。
综合上面的案例,很容易得到一个正则表达式:"(\\n\\r)|(\\r\\n)|\\r|\\n",通过这个正则就可以解决换行问题了