2014-07-23 83 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(!dividedByNewLine [i] .trim()。equals(」「))」code block worked。謝謝 – 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)); 

}