2016-11-16 3 views
0

У меня есть значение в таблице базы данных, которое я хотел бы разделить на |, значение равно Company|company.pdf|images.pdf. Когда я запускаю следующий код, он возвращает C в Debug.После того, как split array дает только первый символ

Что я делаю неправильно?

 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 [] Ь = a.split ("\\ |");

будет работать нормально с этим