2014-07-23 6 views
1

Я пытаюсь разделить текст запятой и добавить в список каждый. Текст образца:Сплит и удаление новой строки

пользователя 1, роль 1

пользователь 2, роль 2
пользователь 3, роль 3

user 4 , role 4 

user 5 , role 5 

Функция:

private Map<Integer, List<String>> map = new HashMap<Integer, List<String>>(); 
public String splitString(String sentence) { 
    List<String> list; 
    String[] dividedByNewLine = sentence.split("\n"); 
    for (int i = 0; i < dividedByNewLine.length; i++) { 
      String[] divideByComma = dividedByNewLine[i].split(","); 
      list = new ArrayList<String>(); 
      for (int j = 0; j < divideByComma.length; j++) { 
       list.add(divideByComma[j].trim()); 
      } 
      if (!list.isEmpty()) { 
       map.put(i, list); 
      } 
      System.out.println(map.get(i)); 

    } 

    return null; 
} 

Но функция построить список следующим образом:

[пользователь 1, роль 1]

[]

[пользователь 2, роль 2]

[пользователь 3, роль 3]

[]

[пользователь 4, роль 4]

[]

[пользователь 5, роль 5]

Как я могу удалить "[]" в списке?

+0

это потому, что 'метод toString' имеет список представление таким образом. –

ответ

0

попробовать этот for цикл:

for (int i = 0; i < dividedByNewLine.length; i++) { 
     if(!dividedByNewLine[i].trim().equals("")) { 
      String[] divideByComma = dividedByNewLine[i].split(","); 

     list = new ArrayList<String>(); 
     for (int j = 0; j < divideByComma.length; j++) { 
      list.add(divideByComma[j].trim()); 
     } 
     if (!list.isEmpty()) { 
      map.put(i, list); 
     } 
     System.out.println(map.get(i)); 
     } 
} 

В принципе, вы должны пропустить пустые строки.

+0

"if (! SplitByNewLine [i] .trim(). Equals (" "))" работает блок кода. Спасибо – Furkan

0

Потому что ваш ввод имеет пустую строку. Если вы не хотите, чтобы показать пустую строку, вам следует код должен быть:

for (int i = 0; i < dividedByNewLine.length; i++) { 
    if (!dividedByNewLine[i].trim().isEmpty()){ 
     String[] divideByComma = dividedByNewLine[i].split(","); 
      list = new ArrayList<String>(); 
      for (int j = 0; j < divideByComma.length; j++) { 
       list.add(divideByComma[j].trim()); 
      } 
      if (!list.isEmpty()) { 
       map.put(i, list); 
      } 
      System.out.println(map.get(i)); 
    } 
} 
0

Поиск в dividedByNewLine все строки, которые являются пустыми и удалить их! Тогда вы получите

user 1 , role 1 
user 2 , role 2 
user 3 , role 3 
user 4 , role 4 
user 5 , role 5 

Или dividedByNewLine[i].split(",") для dividedByNewLine, которые не являются пустыми:

for (int i = 0; i < dividedByNewLine.length; i++) 
{ 
    if(!dividedByNewLine[i].isEmpty()) 
    { 
     String[] divideByComma = dividedByNewLine[i].split(","); 

     ... 
    } 
} 
0

Вы можете устранить [] перед добавлением в список: -

for (int i = 0; i < dividedByNewLine.length; i++) { 
     String[] divideByComma = dividedByNewLine[i].split(","); 

     //Add this control statement 
     if(divideByComma.isEmpty()) 
     continue;  //If the string is empty then continue the loop 

     list = new ArrayList<String>(); 
     for (int j = 0; j < divideByComma.length; j++) { 
      list.add(divideByComma[j].trim()); 
     } 
     if (!list.isEmpty()) { 
      map.put(i, list); 
     } 
     System.out.println(map.get(i)); 

} 
Смежные вопросы