2014-03-13 73 views
1

假設我的代碼有效。然而,這個代碼小片斷:Java標準化列表

while ((line = input.readLine()) != null) { 
    myList.add(line.replaceAll ("[^a-zA-Z0-9 ]", "").toLowerCase()); 
} 

是給我這樣的輸出:

a b c d 
123 
abcdz 
456 
aa 
b 
c 
dd 

所需的輸出:

abcd123abcdz456aabcdd 

輸出這個結果的代碼是一個主要方法,並是:

for (int i = 0; i < args.length; i++) { 
        BufferedReader reader = new BufferedReader (new FileReader (args[i])); 
        List<String> foo = simplify(reader); 
         for (int j = 0; j < foo.size(); j++) { 
          System.out.println(foo.get(j)); 
         } 
       } 

有任何想法嗎?

謝謝你們提前。

+2

你應該修剪空格和換行,那是全部。 – Juvanis

+0

我明白 - 但是很少/不知道如何將代碼編入我的代碼 – user3364788

+1

String s =「」; 's.replace(「」,「」)''和's.trim()' –

回答

1
StringBuilder sb = new StringBuilder(); 
while ((line = input.readLine()) != null) { 
    String s = line.replaceAll("[^a-zA-Z0-9 ]", "").toLowerCase(); 
    myList.add(s); 
    sb.append(s.trim()); 
} 

然後打印出sb.toString()

System.out.println(sb.toString());

0

readLine應該忽略換行符。 你可以顯示你正在使用的輸出代碼嗎?

+0

我不想使用StringBuilder。輸出結果的代碼是for(int i = 0; i foo = simplify(reader); \t \t \t \t \t \t對(INT J = 0;Ĵ user3364788

+0

啊,還有你的問題呢。使用System.out.println意味着你在每個元素後面添加一個換行符,同時生成輸出。改爲使用System.out.print()。 – sheltem

+0

啊,是的,謝謝! – user3364788

0

有幾個選項,

// Add a trim call 
myList.add(line.replaceAll ("[^a-zA-Z0-9 ]", "").toLowerCase().trim()); 

或者調用鏈取代

myList.add(line.replaceAll ("[^a-zA-Z0-9 ]", ""). 
    replace("\r", "").replace("\n","").toLowerCase()); 

或許你應該提取邏輯到自定義方法完全。

編輯 添加此,

if (foo.get(j) != null && foo.get(j).trim().length() > 0) { 
    System.out.println(foo.get(j).trim()); 
} 
+0

我已經嘗試了這兩種方法,但仍在印刷新行 – user3364788

+1

@ user3364788根據對問題的更新進行編輯。 –

0

爲了消除所有的白色空間,並生成一個String出多個輸入Strings的:

// initializing StringBuilder 
StringBuilder sb = new StringBuilder(); 
// iterating over lines read by Reader 
while ((line = input.readLine()) != null) { 
    // appending line to StringBuilder 
    sb.append(line); 
} 

// printing StringBuilder toString lowercased with replaced white space 
String result = sb.toString().toLowerCase().replaceAll("\\s", ""); 
System.out.println(result);