簡體   English   中英

Java正則表達式刪除csv中不需要的雙引號

[英]java regex to remove unwanted double quotes in csv

我有一個csv文件,其中包含以下行。 如您所見,數字沒有用雙引號引起來。

String theLine = "Corp:Industrial","5Nearest",51.93000000,"10:21:29","","","","10:21:29","7/5/2016","PER PHONE CALL WITH SAP, CORRECTING "C","359/317 97 SMRD 96.961 MADV",""

我嘗試閱讀上面的行並使用regEX進行拆分

String[] tokens = theLine.split(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");

這不會像我想要的那樣在每個逗號處分開。 “具有SAP的每通電話,更正了“ C”,將其弄亂了,因為它具有附加的,(逗號)和“(雙引號)。 有人可以幫我寫一個正則表達式嗎,它會轉義一個額外的雙引號和一個用兩個雙引號引起的逗號。

我基本上想要:

"Corp:Industrial","5Nearest",51.93000000,"10:21:29","","","","10:21:29","7/5/2016","**PER PHONE CALL WITH SAP CORRECTING C**","359/317 97 SMRD 96.961 MADV",""

在某些工作中,解析器比正則表達式要好得多,這類事情通常就是其中之一。 我並不是說您無法使其適合您,但是...您還可以使用開源的CSV解析器來投入使用。

話雖如此,您的CSV在我看來還是很可疑。

"PER PHONE CALL WITH SAP, CORRECTING "C",

該值中包含三個引號-是要表示內部僅包含一個引號的字符串嗎? 還是C應該用引號和String包圍?

通常,如果要在雙引號中包含雙引號,則需要特殊語法。 對於CSV,最常見的選擇是將其加倍,或使用反斜杠等字符將其轉義:

"PER PHONE CALL WITH SAP, CORRECTING ""C""",

要么:

"PER PHONE CALL WITH SAP, CORRECTING \"C\"",

這些都不會直接改變您使用正則表達式的問題,但是一旦您擁有格式正確的CSV,成功解析它的幾率就會增加。

暫無
暫無

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

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