2015-10-24 190 views
2

我試圖從文件輸入中過濾出逗號和空格。 我返回線路輸入的(例如低於並通過該線路到其被過濾掉逗號和領先的方法和尾部空格)刪除尾隨和前導空格

John Paul Claurigh, Craig Megan, Bob a’ Chores 

應該過濾到一個陣列中的三個單獨的字符串。

John Paul Claurigh 
Craig Megan 
Bob a’ Chores 

我的問題是沒有擺脫逗號,但消除了前導和尾隨空格。

public void listConverter(String list){ 
String[] array=listConverter.split(","); 
for(int i=0; i<array.length; i++){ 
    addSubject(array[i]); 
} 

我可以使用拆分方法來擺脫前導和尾隨空格嗎?

+2

'.split(\\ S *,\\ S *);'尋找具有或不具有周圍的空白逗號。正則表達式會貪婪併吞噬所有的空格。 –

+0

用','分割。 。 – Tushar

回答

0

一個簡單的拆分與逗號後的間隔比更夠

String s = "John Paul Claurigh, Craig Megan, Bob a’ Chores"; 
String[]tokens = s.split(", ");//note the space after comma. 
System.out.println(Arrays.toString(tokens)); 
+0

這並不是刪除問題中提到的所有前導空格和尾部空格。它只適用於問題中給出的單個示例。 –

2

試着這麼做:之前或之後

String[] array = s.split("\\s*,\\s*"); 

這意味着任何數字(0到n)分割空間逗號(,)。

輸出:

<John Paul Claurigh> 
<Craig Megan> 
<Bob a’ Chores> 
+0

@Neuron,你不能在split()方法上使用trim()。 SMA的回答對於所問的問題是正確的。 OP希望在單個語句中分割以及處理前導/尾隨空格。引用 - _split方法來擺脫前導和尾隨空格_ –

1

您的代碼似乎是正確的,只是用trim()刪除前導/結尾的空格

public void listConverter(String list){ 
String[] array=listConverter.split(","); 
for(int i=0; i<array.length; i++){ 
    addSubject(array[i].trim()); 
} 
0

你可以試試這個:

public void listConverter(String list){ 
String[] array=listConverter.split("\\s*,\\s*"); 
for(int i=0; i<array.length; i++){ 
    addSubject(array[i]); 
} 

它會分裂逗號有或沒有任何前導/尾隨空格。

0

一個java 8再現

String fileInput = "John Paul Claurigh, Craig Megan , Bob a’ Chores "; 

    List<String> namesList = Pattern.compile(",\\s") 
      .splitAsStream(fileInput) 
      .map(name -> name.trim()) 
      .collect(Collectors.toList()); 


    namesList.forEach(name -> System.out.println("NAME: " + name)); 

OUTPUT

NAME: John Paul Claurigh 
NAME: Craig Megan 
NAME: Bob a’ Chores 
相關問題