2016-11-16 74 views
0

我在數據庫表中有一個值,我想分割|值爲Company|company.pdf|images.pdf。當我運行下面的代碼時,它只會在調試中返回C分割數組後只給出第一個字符

我在做什麼錯?

 String cname = null; 
     String cpdf = null; 
     String cimages = null; 
     String catGetGeneralNameSQL = "SELECT * FROM categorymeta WHERE key = 'category_general' AND company = " + dashboard_company_id; 
     Cursor catGetGeneralNameQuery = myDB.rawQuery(catGetGeneralNameSQL, null); 
     while(catGetGeneralNameQuery.moveToNext()){ 
      String name = catGetGeneralNameQuery.getString(catGetGeneralNameQuery.getColumnIndex("value")); 
      String[] separated = name.split("|"); 
      Log.d("LOG", separated[1]); 
     } 

回答

1

這是因爲該方法split()採取正則表達式作爲參數,並|是在正則表達式保留字符。

嘗試使用:\\|來逃避它。

public static void main(String[] args) { 
    String test = "Company|company.pdf|images.pdf"; 
    String[] result = test.split("\\|"); 
    System.out.println(result[1]); 
} 

它輸出:

company.pdf 

參見split()方法文檔:https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

管道(沒有被轉義)中的正則表達式是用來分隔備用匹配模式,例如:aaa|bbb將匹配「aaa」或「bbb」,這就是爲什麼在不逃脫時它匹配每個單獨的字符。

希望它有幫助。

1

您需要逃離原來的特殊字符:

String[] separated = name.split("\\|"); 
0

使用: 的String [] B = a.split( 「\\ |」);

它可以正常工作