我讀文件一行一行到刺痛,使用line.indexOf('"', 1)
和substring()
它分解成小串,但這種方式不檢測是否前"
是\
或不那麼它不反應逃逸字符。我該如何解決這個問題?轉義字符
(我不能只用line.split('"')
職高"
都在開始和字符串的結束,也沒有其他字符分割,導致我的任務不會允許這樣做。)
整個閱讀部分是:
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
while(line.length()>0){
if(line.charAt(0) == ',' || line.charAt(0) == ' '){
line = line.substring(1);
}
else{
if(line.indexOf(',') != -1){
if (line.charAt(0) == '"'){
pabaiga = line.indexOf("\"", 1);
zodis = line.substring(0, pabaiga+1);
line = line.substring(pabaiga+1);
duomenys.add(zodis);
}
else{
pabaiga = line.indexOf(',');
zodis = line.substring(0, pabaiga);
line = line.substring(pabaiga);
duomenys.add(zodis);
}
}
else{
zodis = line;
line = line.substring(line.length());
duomenys.add(zodis);
}
}
for(String elem : duomenys){
System.out.println(elem);
}
duomenys.removeAll(duomenys);
}
我不允許使用分隔符作爲分隔符,因爲在字符串中間可能有一個,使用\,在文本文件中不是一個選項。所以我建議確定一個sting元素爲「文本」,但如果它包含另一個「或\」在中間,我目前的代碼不起作用。
,如果我的從文本文件中的行是"start \"title\" end", 10, 20, "text"
刺痛數組應該包含
- [0]
"start "title" end"
- [1]
10
- [2]
20
- [3]
"text"
請提供一個輸入的例子,我想你可以'拆分',因爲它需要一個正則表達式 –
使用正則表達式來解決你的問題你可以定義一個正則表達式否定式t只在前面的字符不是反斜槓時才匹配(\) – sjkm
請[[edit]]用幾個輸入和預期輸出示例來編寫問題,因爲現在你的問題不太清楚你想要實現什麼。 – Pshemo