字符串分割是经常碰到的,下面罗列一下一些常用的方法,测试过的
使用substring:
substring(参数)是java中截取字符串的一个方法
有两种传参方式
一种是public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
另一种是public String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
下面需要将Ip地址:192.168.0.248分割出数字
public class subString { public static void main(String args[]){ String str1="192.168.0.248"; String [] str2=new String[4]; int kk=str1.length(); int count=0; int num=0; for(int i=count;i<kk;i++){ if(str1.substring(i, i+1).equals(".")){ str2[num]=str1.substring(count, i).trim(); num++; count=i+1; } else{ } str2[str2.length-1]=str1.substring(count, kk).trim(); } for(int k=0;k<str2.length;k++){ System.out.println(str2[k]); } } } <span style="font-size:18px;">输出结果</span>:
<img src="http://img.blog.csdn.net/20141222225649740?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />第二种方法:
使用split方法,这个方法很直接
<pre name="code" class="java">public class subString { public static void main(String args[]){ String str1="192.168.0.248"; String a[] = str1.split("."); for(int k=0;k<a.length;k++){ System.out.println(a[k]); } } }使用过split的同学可能直接就这么用了,运行会发现,没有输出结果,为什么呢?我也很郁闷,百度了一下找到了答案:
String ip = "192.168.0.248";
String[] ips = ip.split(".");// 我们经常用 分号,逗号,顿号以及其他一些符号 都很正常
刚开始以为是split方法对此有特殊要求,小数点有特殊用途,不能作为分隔符。最后查询了下 jdk api才发现不是split方法的问题。是模式匹配的事。
我们在调用split(".")方法时,程序都会以中间符号作为模式匹配的字符。例如:ip.split(".")时,程序会用“.”在ip中进行匹配。但是在 Pattern 类中方法中,有些符号有特殊定义。例如:小数点“.”代表匹配的是任意字符,而不是小数点了。这些我们在正则表达式中经常遇到。如果想使用小数点 必须加上“\\”
String[] ips = ip.split("\\."); 就能达到想要的效果了。以小数点作为分隔符。
那么正确的程序应该是:<pre name="code" class="java">public class subString { public static void main(String args[]){ String str1="192.168.0.248"; String a[] = str1.split("\\."); for(int k=0;k<a.length;k++){ System.out.println(a[k]); } } }不做一遍估计我也很难发现。
还有个比较特殊的: 如果用竖线“|”分隔的话,将出现不可得到的结果,必须改为“\\|” 。