2017-01-14 2 views
0

文字列にカンマを期待 - 私は(、)コンマに基づいて行分割したいが、文字列の中に、カンマを考慮していない私はカンマ(、)に基づいて行分割したいが、サブに

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 
+0

このパターンはすべての文字列で同じですか? –

+0

yesすべての文字列のパターン – Aniket

+0

'、'に基づいた分割文字列、次にインデックス1と2の連結文字列。 –

答えて

1

あなたは、Apache Commonsのを使用することができます場合は、のStringUtilsのメソッドsplitあなたは、例えば、探しているものです:

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

は指定された配列、セパレータに提供されたテキストを分割。これは、StringTokenizerを使用する代わりに です。

セパレータは、返された文字列配列に含まれません。隣接するセパレータは1つのセパレータとして扱われます。 splitをより詳細に制御するには、StrTokenizerクラスを使用します。

null入力文字列は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

だけそのため、外部ライブラリを使用したくない場合は、部分的にはなるし、それらを取得する必要があり定義するために正規表現を使用した方法があります。

あなたのスティングにコンマの間に空のフィールドを含めることができます。

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

Regex101のデモをご覧ください。

関連する問題