簡體   English   中英

在Java中,如何分割這些行?

[英]In Java, how to split lines like these?

我知道如何使用Java的字符串拆分方法,像這樣

String s="a,b,c";
s.split(",");

但是如何分割以下幾行:

 FirstName,LastName,Companies,Title,EmailAddress,PhoneNumbers,Tags,Note
 Tom,Smith,ABC Co.,Manager,toms@xyz.com,,,
 John,White,"Some-Company, Inc.","Network Manager, Architect",xyz@abc.com,,,

處理第一行和第二行很容易,但是第三行有一些麻煩,因為它在[“]內包含[,],有什么建議嗎?

編輯:我研究了其他兩個類似的問題和答案,但它們與我的問題不同,我的問題以[,]作為分隔符,其他兩個問題具有空格字符作為分隔符,並且我的問題中也存在空格這會使問題變得很復雜,因此,如果我使用該答案,它將無法正常工作,請不要將其標記為重復項。

經過研究和測試,我找到了答案,這是一些示例代碼:

String str="John,White,\"Some-Company, Inc.\",\"Network Manager, Architect\",xyz@abc.com,,,";
Vector<String> v=new Vector<String>(8);
for (int i=0;i<8;i++) v.add("");

String regex="\"([^\"]*)\"|([^,\\s][^\\,]*[^,\\s]*)";
m=Pattern.compile(regex).matcher(str);
int index=0;
while (m.find())
{
  if (m.group(1) != null) v.set(index,"Quoted [" + m.group(1) + "]");
  else v.set(index," Plain [" + m.group(2) + "]");
  index++;
}
for (int i=0;i<v.size();i++) System.out.println("<"+(i+1)+"> "+v.elementAt(i));

由於最后我還必須考慮一些空白項,因此我將向量的大小設置為8,並將每個項都設置為一個空白空間作為占位符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM