2015-10-24 28 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 
相关问题