![](/img/trans.png)
[英]Split csv file with single quotes, double quotes or no quotes in c# using regular expression
[英]C# Parsing Strings that contain Double Quotes and Single Quotes using Regular Expression
我正在從Visual Basic 6源文件中解析多個雙引號文字文本。 某些行可能在每個語句的末尾都有注釋。 每條評論都以單引號開頭。 此外,文字文本可能有單引號,我需要保留。 下面的行是最后帶注釋的語句示例。
示例行:MsgBox“在執行醫療保健數據字典搜索之前必須輸入至少2個'字符'。”,vbInformation,“搜索硬盤”這是“評論”。
以下正則表達式將返回:
Must enter at least 2 'characters' before doing a Healthcare Data Dictionary Search.
Search HDD
comment
下面的正則表達式將捕獲/解析多個雙引號字符串文字,但是它不會忽略單引號后面的雙引號字符串(在注釋中)。
Regular Expression: "([^""]*)(?:\.[^""\\])*"
C#-Style: @"""([^""""]*)(?:\.[^""""\\])*"""
我希望能夠剝離注釋,但是如果我查找單引號,那么單引號可能是我想保留的雙引號字符串,從而剝離了雙引號字符串的一半。
如果不清楚,請告訴我,我會盡力澄清。
有什么建議么?
我看到你用c#標記了這個。 為什么不使用c#和LINQ呢! 像下面這樣的東西適合你嗎?
var text = "MsgBox \"Must enter at least 2 'characters' before doing a Healthcare Data Dictionary Search.\", vbInformation, \"Search HDD\" 'This is a \"comment\".";
//Use LINQ to count singlequotes
var singleQuoteOccurences = text.Count(sq => sq == '\'');
//If you have an odd number, that means a comment is at the end
//so just strip off everything after that last quote
if(singleQuoteOccurences % 2 == 1)
text = text.Substring(0, text.LastIndexOf('\''));
產量:
MsgBox“在進行醫療保健數據字典搜索之前必須輸入至少2個'字符'。”,vbInformation,“搜索硬盤”
這可以很容易地封裝到“StringVBTrailingComment(字符串行)”或類似的東西中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.