【好程序员特训营】Java字符串截取分割

字符串分割是经常碰到的,下面罗列一下一些常用的方法,测试过的

使用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]);
	    		}
	}
}

 
 不做一遍估计我也很难发现。 
 

还有个比较特殊的: 如果用竖线“|”分隔的话,将出现不可得到的结果,必须改为“\\|”  。


你可能感兴趣的:(java,字符串,String)