是否有使用通配符來定義以下的方式:某些字符不能用逗號替換字符嗎?
我想一個"\"
來之前和一個逗號後,當一個逗號沒有之前或之後包含"\""
。
我有點不確定如何做否定。
編輯樣品數據:
"col1,col2,col3"
應該成爲
"\"col1\",\"col2\",\"col3\""
其中 「\」」只是意味着一個引號字符串
是否有使用通配符來定義以下的方式:某些字符不能用逗號替換字符嗎?
我想一個"\"
來之前和一個逗號後,當一個逗號沒有之前或之後包含"\""
。
我有點不確定如何做否定。
編輯樣品數據:
"col1,col2,col3"
應該成爲
"\"col1\",\"col2\",\"col3\""
其中 「\」」只是意味着一個引號字符串
使用正則表達式或簡單的更換:
string s = "col1,col2\",\"col3";
// replace all existing quotes and replace all commas with escaped characters again
string r = s.Replace('\"','').Replace(",","\",\"");
// r = "col1\",\"col2\",\"col3"
但這並不做什麼你的樣本數據是這樣的:
"col1,col2,col3" should become "col1\",\"col2\",\"col3\""
這不是按照你的規則(看後\"
!)。也許你想包裹所有的col,所以你可以在開始和結束時添加一個\"
。 (假設分隔符永遠只是,
,不包括空格)
對不起,我錯過了開始時的報價,是的我也編輯了我的問題 – mezamorphic 2012-04-13 09:56:34
然後只是在開頭和結尾添加「你應該得到你想要的:-) – Matten 2012-04-13 09:58:09
我不認爲你可以使用這個,因爲第二個替換將模式匹配逗號,即使這個逗號在它之前已經有了一個引號。你最終會報價,報價,逗號,報價? – mezamorphic 2012-04-13 10:09:53
更換匹配的一切如下:^(\\\"),^(\\\")
有:\",\"
這意味着什麼,但一個反斜槓後跟一個引號,後跟一個逗號,後跟除反斜槓後面加上引號外的任何內容。
這是絕對正確的,因爲它不會編譯,你是否在某處丟失了引號? – mezamorphic 2012-04-13 09:58:29
可能,沒有自己測試。剛剛給了我用Java構建的一般的正則表達式...應該知道引用仍然是一個問題。在這兩個組中都將它變成(\\\「),並在組之前使^,否則將會出錯......現在編輯 – MarioDS 2012-04-13 10:15:58
Regex.Replace(Line,」^(\\\「 ),^(\\\「)」,「\」,\「」)似乎不起作用?(道歉,如果我在錯誤的地方插入引號) – mezamorphic 2012-04-13 10:27:14
使用「負看看後面」斷言:
(?<!\\),
不能給你一個更好的答案,而無需樣品輸入/輸出。
嘗試(?<!\"),(?!\")
,這就是所謂Zero-Width Assertions
我現在很忙,後來解釋,遺憾的是。
你的意思是?Regex.Replace(Line,「(?<!\」)「,」(?!\「)」)? – mezamorphic 2012-04-13 10:24:32
我知道這個線程是有點老,但新參觀這也可以做到:
string sample = "col1,col2,col3"
string result = sample.Replace("""","");
result = "\"" + result.replace(",","\",\"") + "\""
希望它能幫助!
請顯示一些示例輸入和輸出數據。 – 2012-04-13 09:36:12
這不是全部的事實。請在第二部分的要求中顯示樣本數據:*當逗號字符在其之前或之後不包含「\」「* – 2012-04-13 09:44:58
我的錯誤,現在編輯 – mezamorphic 2012-04-13 09:58:51