2010-08-15 57 views
3
buildLetter.Append("</head>").AppendLine(); 
buildLetter.Append("").AppendLine(); 
buildLetter.Append("<style type="text/css">").AppendLine(); 

假設上述內容駐留在一個文件中。我想寫一個片段, 刪除任何具有空字符串「」的行,並在 中間引號前放置轉義字符。最終輸出將爲:如何在使用C#的特殊字符之前放置轉義字符?

buildLetter.Append("</head>").AppendLine(); 
buildLetter.Append("<style type=\"text/css\">").AppendLine(); 

外部「....」不被視爲特殊字符。特殊字符可能是單個 報價或雙引號。

我可以通過查找和替換Visual Studio的功能來運行它。然而,在我的情況下,我想要用c#或VB.NET編寫。

任何幫助將不勝感激。

+2

你怎麼知道哪個引號結束的字符串,並應逃脫?你能不能有'(「a」+「b」)'這樣的東西,如果是的話應該改成'(「a \」+ \「b」)'? – 2010-08-15 09:51:47

+0

他們都應該逃脫。根據經驗法則,第一個和最後一個報價不得轉義。其他任何引號都必須轉義。 – 2010-08-15 10:08:41

回答

3

這或許你想要做什麼:

string s = File.ReadAllText("input.txt"); 
string empty = "buildLetter.Append(\"\").AppendLine();" + Environment.NewLine; 
s = s.Replace(empty, ""); 
s = Regex.Replace(s, @"(?<="").*(?="")", 
     match => { return match.Value.Replace("\"", "\\\""); } 
    ); 

結果:

 
buildLetter.Append("</head>").AppendLine(); 
buildLetter.Append("<style type=\"text/css\">").AppendLine(); 
+0

試試吧,讓你知道...... – 2010-08-15 10:09:17

+0

工作................. – 2010-08-15 14:32:22