Java按逗号分隔包含空格的字符串

时间:2019-09-04 03:44:35

标签: java split

我有一个下面的字符串,我只想用','分割,还想分隔第三索引,即每行的(1005,111222)。

1002,USD,04/09/2019,1005,1,cref,,,,,,,,,
1001,USD,11/04/2018,111222,10,reftpt001,SHA,Remittance Code,BCITIT31745,,,RTGS,,,,

我在下面使用代码:

List<String> elements = new ArrayList<String>();
List<String> elements2 = new ArrayList<String>();
StringTokenizer st = new StringTokenizer((String) object);
while(st.hasMoreTokens()) {
                    String[] row = st.nextToken().split(",");
                    if (row.length == 5) {
                        elements.add(row[3]);
                    }
                    if (row.length == 12) {
                        elements2.add(row[3]);
                    }
                }

在上面的字符串中,“ Remittance Code”之间有一个空格,但一直拆分到remittance之后,之后它才将代码计算为新行或字符串。请告知我如何跳过空白区域。

4 个答案:

答案 0 :(得分:2)

这里显然不需要StringTokenizer,并且nextToken()调用在第一个空格处停止。相反,我建议像

一样直接调用output.split(",")
String[] row = ((String) object).split("\\s*,\\s*", -1);

并删除inputtypes.com注释,JavaDoc明确表示 StringTokenizer是一个遗留类,出于兼容性原因保留,尽管在新代码中不鼓励使用。建议寻求此功能的任何人都使用split的{​​{1}}方法或java.util.regex软件包。

答案 1 :(得分:0)

首先可以拆分,然后使用修剪操作

答案 2 :(得分:0)

String stringToSplit= "1001,ZAR,11/04/2018,111222,10,reftpt001,SHA,Remittance Code,BCITIT31745,,,RTGS,,,,"; 
StringTokenizer tokenizer = new StringTokenizer(stringToSplit, ","); 
while (tokenizer.hasMoreTokens()) { System.out.println(tokenizer.nextToken()); }

输出:

  

1001 ZAR 11/04/2018 111222 10 reftpt001 SHA汇款代码   BCITIT31745 RTGS

答案 3 :(得分:0)

我尝试了以下代码:

第一种方法:

String str = "1001,ZAR,11/04/2018,111222,10,reftpt001,SHA,Remittance Code,BCITIT31745";
String[] words = str.split(",");
for(String word : words) {
   System.out.println(word);
}

第二种方法:

String str = "1001,ZAR,11/04/2018,111222,10,reftpt001,SHA,Remittance Code,BCITIT31745";
StringTokenizer tokenizer = new StringTokenizer(str, ",");
while(tokenizer.hasMoreTokens())
{
  System.out.println(tokenizer.nextToken());
}

输出:

11/04/2018
111222
10
reftpt001
SHA
Remittance Code
BCITIT31745

希望这对您有所帮助。 :)

相关问题