只要通過你的字符串。如果您處於「阻止」狀態,則在您穿過字符串時請保持軌跡
。如果你是 - 不要將逗號作爲
逗號(作爲分隔符)。否則,請像這樣對待它。這是一個簡單的
算法,我會自己寫。當你遇到第一個「你輸入
一個塊。當你遇到下一個」,你結束了你的那個塊,等等。
所以你可以通過你的字符串一次。
import java.util.ArrayList;
public class Test003 {
public static void main(String[] args) {
String s = " John, , , , \" Barry, John \" , , , , , Doe, \"Sid , Nency\", Smith ";
StringBuilder term = new StringBuilder();
boolean inQuote = false;
boolean inTerm = false;
ArrayList<String> terms = new ArrayList<String>();
for (int i=0; i<s.length(); i++){
char ch = s.charAt(i);
if (ch == ' '){
if (inQuote){
if (!inTerm) {
inTerm = true;
}
term.append(ch);
}
else {
if (inTerm){
terms.add(term.toString());
term.setLength(0);
inTerm = false;
}
}
}else if (ch== '"'){
term.append(ch); // comment this out if you don't need it
if (!inTerm){
inTerm = true;
}
inQuote = !inQuote;
}else if (ch == ','){
if (inQuote){
if (!inTerm){
inTerm = true;
}
term.append(ch);
}else{
if (inTerm){
terms.add(term.toString());
term.setLength(0);
inTerm = false;
}
}
}else{
if (!inTerm){
inTerm = true;
}
term.append(ch);
}
}
if (inTerm){
terms.add(term.toString());
}
for (String t : terms){
System.out.println("|" + t + "|");
}
}
}
它看起來像你處理CSV輸入?如果是這樣,*請*使用CSV庫 - 有很多好的,它會爲您節省很多的痛苦!如果您不是,請澄清您的問題,以解釋爲什麼CSV庫不適合... –
不,它不是一個CSV文檔。這只是一個字符串 – Andrei
RB,如果你給我看,我會很高興,我怎麼能用Csv Lib來處理這個問題 – Andrei