标签:str java spl mamicode code class http col 表达式
一、问题如下:
1、先对一个已有字符串进行操作,使用 ; 进行分割:
//示例字符串 String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;"; //先用;进行分割 String a[]=string.split(";"); for(String str:a) { System.out.println(str); }
此处切割之后的结果是没有问题的,结果为:
2、对切割完的结果再用 . 进行切割:
//示例字符串 String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;"; //先用;进行分割 String a[]=string.split(";"); for(String str:a) { String b[]=str.split("."); for(String str2:b) { System.out.println(str2); } }
此时就会报错,无法得出结果。
二、问题解析
split方法的参数是正则表达式,在使用字符或字符串作切割符时要注意对某些字符做转码。
就像之前问题里使用 ; 进行切割就没什么问题,但是使用 . 进行切割就会出现报错。 . 在正则表达式中表示任意字符,如果要通过.号做分割,则需要使用双斜杠或者Pattern.quote()方法对其进行转码:
split("\\.")
split(Pattern.quote("."))
这样问题就得到了解决:
//示例字符串 String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;"; //先用;进行分割 String a[]=string.split(";"); for(String str:a) { String b[]=str.split(Pattern.quote(".")); for(String str2:b) { System.out.println(str2); } }
结果如下:
Java开发:字符串切割split函数——切割符转码注意事项
标签:str java spl mamicode code class http col 表达式
原文地址:https://www.cnblogs.com/guobin-/p/11871137.html