我有一些特殊字符的字符串。
目的是检索每行的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
。