2017-01-31 3 views
-1

мне нужна помощь, чтобы отделить строки, пример:Split Строка динамического

String trunk = "50 | 1 | 13"/* информационная база данных (Dynamic) */

String[] dial_discagem = tronco.split("|"); 

Мне нужно, чтобы получить dial_disc информацию и вызвать «getDialDiscing ", передав идентификатор соединительной линии. GetDialDiscing вернет мне строку, в которой я должен установить ее следующим образом.

dial = "SIP/trkfixo|SIP/TESTESIP|Khomp/b0l1"; 

Я пытался сделать это:

String[] dial_discagem = tronco.split("|"); 
      String dial = ""; 

for(int i=0;i<dial_discagem.length;i++){ 

     String[] innerData = dial_discagem[i].split("|"); 
     String id = innerData[i]; 
     dial += getDialDiscagem(Integer.parseInt(id))+"|"; 
} 

Но это дает следующее сообщение об ошибке:

**Exception in thread "Thread-36" java.lang.ArrayIndexOutOfBoundsException: 1 
at local.astman.db.CampanhaClienteChamadaDAO.getChamadasPendentes(CampanhaClienteChamadaDAO.java:303)** 
+1

Может быть, вы можете повторно рассмотреть вопрос о разработке базы данных, если * это * приходит из БД. Кроме того, проверьте свое тело. Это довольно очевидно, где проблема. – KarelG

+0

Характер Escape pipe, поскольку он имеет особое значение в REGEX i.e. "|" – SMA

+0

innerData и dial_discagem - это две разные вещи различной длины. – tak3shi

ответ

1

Вы должны объявить и определить массив первого, например, вне цикла.

чем вы должны заменить все пробелы, чем вы можете разделить на |.

Пример кода

String trunk = "50 | 1 | 13"; 
     String temp = trunk.replaceAll("\\s+",""); 
     String[] dial_discagem = temp.split("\\|"); 
     String dial = ""; 
     String[] innerData = new String[dial_discagem.length]; 
     for(int i=0;i<dial_discagem.length;i++){ 

      innerData[i] = dial_discagem[i]; 
      String id = innerData[i]; 
      dial += getDialDiscagem(Integer.parseInt(id))+"|"; 
     } 
2

вам нужен экранирующий символ, такой как:

final String dial = "SIP/trkfixo|SIP/TESTESIP|Khomp/b0l1"; 
final String[] discagem = dial.split("\\|"); 
for (int i = 0; i < discagem.length; i++) { 
    System.out.println(discagem[i]); 
}