我想基于逗号(,)分割行,但期望在子串中使用逗号

时间:2017-01-14 09:59:17

标签: java string split

字符串 -

Bank of India,1.19E+13,06-02-2015,"BY CLG/237336/560015089/CAB,IND",140980,C,,140980,2,NA,N

我想根据逗号(,)拆分行,但不要在字符串中考虑逗号。 我希望输出数组如:

Bank of India
1.19E+13,06-02-2015
BY CLG/237336/560015089/CAB,IND
140980
C
140980
2
NA
N

但是在字符串BY CLG/237336/560015089/CAB,IND逗号问题中;有没有人面临这样的问题?

一些字符串,例如 -

State Bank of India,30902918138,01-06-2015,DEP TFR TRF FROM 3199860044304 RTGS UTIBR52015060100038810 MOHAN SYNTHETICS,2348386,C,-79046734.87,2348386,6,F04,Y

Bank of India,1.19E+13,06-01-2015,RTGS/CHOPRA ENTERPRISES,330963,C,,330963,1,NA,N

Bank of India,1.19E+13,06-02-2015,"BY CLG/237336/560015089/CAB,IND",140980,C,,140980,2,NA,N

2 个答案:

答案 0 :(得分:1)

如果您可以使用Apache Commons,那么您正在寻找StringUtils中的方法split,例如:

String[] myString =StringUtils.split("string 1, string2", "," );
  

将提供的文本拆分为数组,指定分隔符。这是   使用StringTokenizer的替代方法。

     

分隔符不包含在返回的String数组中。邻   分隔符被视为一个分隔符。为了更好地控制   split使用StrTokenizer类。

     

null输入String返回null。 nullseparatorChars拆分   空格。

StringUtils.split(null, *) = null StringUtils.split("", *) = [] StringUtils.split("abc def", null) = ["abc", "def"] StringUtils.split("abc def", " ") = ["abc", "def"] StringUtils.split("abc def", " ") = ["abc", "def"] StringUtils.split("ab:cd:ef", ":") = ["ab", "cd", "ef"] 

答案 1 :(得分:1)

如果您不想仅使用外部库,可以使用Regex定义部分应该在哪里并获取它们。

我们假设您的Sting可以在逗号之间包含空字段。

([\w ]+),+(.*?),+"(.*?)",+(.+?),+(\w),+(\d+),+(\d),+(\w+),+(\w)

请参阅Regex101上的演示。