Java開發:字符串切割split函數——切割符轉碼注意事項


一、問題如下:

  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);
    }
}

  結果如下:

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM