字符串分割是經常碰到的,下面羅列一下一些常用的方法,測試過的
使用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="https://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]);
}
}
}
不做一遍估計我也很難發現。
還有個比較特殊的: 如果用豎線“|”分隔的話,將出現不可得到的結果,必須改爲“\\|” 。