2016-11-16 7 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"にマッチするので、エスケープされていないときはすべての単一の文字に一致します。

希望します。

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

のString [] B = a.splitを( "\\ |");

これで問題なく動作します

0

使用:あなたは、元の特殊文字エスケープする必要が

関連する問題