我有一些特殊字符的字符串。
目的是检索每行的String [](分隔)
您可以使用特殊字符“,在其中可以使用/ n和,

For example Main String
Alpha,Beta,Gama,"23-5-2013,TOM",TOTO,"Julie, KameL
Titi",God," timmy, tomy,tony,
tini".


您会看到“ /”中有您/ n。

任何可以帮助我解析此。

谢谢

__更多说明

与主刺我需要分开这些

Here Alpha
Beta
Gama
23-5-2013,TOM
TOTO
Julie,KameL,Titi
God
timmy, tomy,tony,tini


问题是:对于Julie,KameL,Titi,在KameL和Titi之间存在换行符/ n或
对于timmy,tomy,tony,tini类似的问题是/ n或tony与tini之间有换行符。



此文本位于文件中(必须逐行阅读)

Alpha,Beta Charli,Delta,Delta Echo ,Frank George,Henry
1234-5,"Ida, John
 ", 25/11/1964, 15/12/1964,"40,000,000.00",0.0975,2,"King, Lincoln
 ",Mary / New York,123456
12543-01,"Ocean, Peter


输出我想删除这个“

Alpha
Beta Charli
Delta
Delta Echo
Frank George
Henry
1234-5
Ida
John
"
25/11/1964
15/12/1964
40,000,000.00
0.0975
2
King
Lincoln
"
Mary / New York
123456
12543-01
Ocean
Peter

最佳答案

尝试这个:

String source = "Alpha,Beta,Gama,\"23-5-2013,TOM\",TOTO,\"Julie, KameL\n"
              + "Titi\",God,\" timmy, tomy,tony,\n"
              + "tini\".";

Pattern p = Pattern.compile("(([^\"][^,]*)|\"([^\"]*)\"),?");
Matcher m = p.matcher(source);

while(m.find())
{
    if(m.group(2) != null)
        System.out.println( m.group(2).replace("\n", "") );
    else if(m.group(3) != null)
        System.out.println( m.group(3).replace("\n", "") );
}


如果它匹配不带引号的字符串,则结果将在第2组中返回。
带引号的字符串在第3组中返回。因此,我需要在while块中进行区分。
您可能会找到更漂亮的方法。

输出:
Α
贝塔
加马
TOM 23-5-2013
托托
朱莉(KalieLTiti)

 timmy,tomy,tony,tini

10-08 01:42