String中使用split()分割字符串遇到元字符的问题

使用split()切割字符串的时候,假如是根据"+","*","\"等一些字符切割,直接这么一个单独的字符串是会报错的,因为split()是根据正则匹配,所以传入的字符串不能是正则的元字符.但是又非得用这些元字符去分割的话,只能通过转义的方法了.

转义字符是"\",在要转义的元字符前面加上这个转义字符,元字符就变成了普通的字符: s.split("\+")

但是在java里,"\"也是有含义的,所以直接s.split("\+")还是会报错的...所以这时候需要将"\"也进行转义,转义为普通的"\"字符,就成了s.split("\\+")

s.split("\\+")的意思就是先将"\"转译为普通的"\"字符,这时候从java的视角看就是"\+",然后这个字符串传入到正则中,正则就会将其转译为"+"字符,所以就可以通过这个"+"分割字符串了.

万一分割字符串的是个"\"怎么办?直接s.split("\\\")么?

不行的,这是会报错的...因为这个的意思是先将"\"转成字符"\",然后另一个"\"怎么办...所以得写成s.split("\\\\"),两个转义"\"分别把元字符"\"转成普通字符,通过java的视角看是"\\"这字符串.然后传给正则,正则一看,一个转义字符要转义另一个转义字符,然后得出的结论就是"\"字符,然后就开心的分割字符串了

猜你喜欢

转载自www.cnblogs.com/erxiaoouba/p/9120584.html