2012-10-17 267 views
-3

我想在CSV文件中使用正則表達式刪除所有使用雙引號的雙引號。目前我使用正則表達式如下做到這一點:刪除雙引號之間的所有雙引號

inputString = Regex.Replace(inputString, @"([^\^,\r\n])""([^$,\r\n])", @""); 

但是,如果我有兩個以上的雙引號,爲前它不工作:

"This is my "test" string"(作品)
"This "is" my "test" string"(不工作)
"This is" my test string"(不工作)

我需要一個通用的正則表達式可以只是刪除雙引號之間的任何雙引號csv文件。

+13

爲什麼不只是做'與string.replace(「\」」,‘’)'並在引號包裹是否存在情況下,這不會是格式 –

+1

它?在簡單字符串的情況下可以,但在csv的情況下,我必須保持領先和尾隨雙引號。 –

+1

'1.刪除所有報價 2.放入一個前導報價 3.放一個尾隨報價' 這是什麼格蘭特托馬斯試圖說。 – pogo

回答

0

使用此:

inputString = Regex.Replace(inputString, @"([^\^,\r\n])""(?=[^$,\r\n])", @"$1"); 
+0

感謝您的支持正則表達式,但它不工作「這是」「我的測試字符串」「」和結果爲: 「這是」我的測試字符串「」這是不正確的 –

+0

它的結果:「增加喜歡」... ?這意味着你可能在csv中有多個匹配項。use:Regex reg = new Regex(@「([^ \ ^,\ r \ n])」「(?= [^ $,\ r \ n])」 ,RegexOptions.Multiline); inputString = reg.Replace(inputString,@「$ 1」); – urlreader

+0

我試過你的建議,使用 Regex reg = new Regex(@「([^ \ ^,\ r \ n])」「 (?= [^ $,\ r \ n])「,RegexOptions.Multiline); inputString = reg.Replace(inputString,@」$ 1「); bu t仍然不期望的結果, 「這是」「我的測試字符串」「」結果爲:「這是」我的測試字符串「」 –

0

嘗試使用

inputString = Regex.Replace(inputString, @"(?<=\".*)\"(?=.*\")", @""); 
3

在評論我的建議是:爲什麼不只是做string.Replace("\"", "")和用引號括?有沒有這種格式的情況?你回覆說你需要將最後的字符串用引號括起來。

讓我試着更明確清楚,因爲這正是我所說的。只需執行如下操作:

inputString = "\"" + inputString.Replace("\"", "") + "\""; 

這將刪除所有引號,然後將最終結果包裹在所需的引號中。

+0

感謝您的正則表達式,但它不適用於「這」是「我的」測試「字符串」和resul ts進入: 「增加喜歡」和評論。「」這是不正確的 對不起,不適合你。 –

+1

@SanjaySen我無法理解你的評論。 – RedFilter

+0

我想他想要做的是一個CSV文件,它可能有多行,他希望保留「對於每一行(如果存在),並且他不想一行一行地讀取txt。」 – urlreader