2010-01-09 40 views
3

我在VB6 &我想知道是否有人等效一個用於C#的都知道這真是有用的應用程序...工具自動隱蔽的文本字符串包含特殊字符格式正確的C#字符串

基本上VB6應用程序允許您將文本粘貼到輸入框中,然後它會生成正確格式的輸出文本(使用特殊字符),以便您可以直接將其粘貼到代碼中而不必轉換特殊字符。

例如...

輸入

說 「你好」

輸出

string s = "Say \"Hello\""; 

如果有人知道C#同等的免費工具,或者我可以在VS2008中做的事情,這將避免我必須做這個過程manuall Ÿ,將不勝感激!

+2

即使你給出的例子是格式不正確 - 前綴字符串中'@'你逃避雙引號的'「」''不\「' – 2010-01-09 14:17:22

+0

@大衛:我覺得。你只是證明這個小應用可能是多麼有用...... – 2010-01-09 14:26:20

+0

現在你看到我的問題......大聲笑...謝謝,我改變了......我真的需要這個工具 – 2010-01-09 14:27:08

回答

2

看一看在Smart Paster加載項。
它允許您以各種格式將剪貼板中的文本粘貼到剪貼板中,併爲您進行這種轉義。

+0

謝謝,那正是我在尋找的orsogufo!這將是一個真正的節約時間... – 2010-01-09 15:14:07

+0

很高興它幫助:) – 2010-01-09 16:55:39

2

的99%溶液是一個班輪:

返回 「\」 「+ textBox1.Text.Replace( 」\「, 」\\「)替換( 」\「」, 「\」 「)+」\「」;

+0

謝謝nobugz ...但是當我嘗試將此代碼粘貼到c#項目中時,出現錯誤 public string Convert(string input) return {「\」「+ input.Replace(」\「,」\\「)。 } – 2010-01-09 14:44:32

+1

請不要讓我猜錯誤。使其靜態。 – 2010-01-09 15:07:39

2

The C# language specification says,在一個逐字字符串(@"...")的唯一特殊字符是雙引號("),它可以通過複製它("")進行轉義。所以,你想要的算法很簡單(未經測試,謹防錯別字):

outputTextBox.Text = "string s = @\"" + inputTextBox.Text.Replace("\"", "\"\"") + "\";"; 

例子:

a  => string s = @"a"; 
a "b" c => string s = @"a ""b"" c"; 
a\b c => string s = @"a\b c"; 

由於逐字字符串支持換行符,這甚至應該爲多行文本。

(實際上,因爲你需要躲避的唯一字符是雙引號,我不知道它是否更值得一寫這個程序。)

+0

感謝您的建議... – 2010-01-09 15:16:36

1

nobugz的解決方案,單個文本行正常工作,但你需要改變它能夠應付多線:

text = text.Replace("\r", @"\r").Replace("\n", @"\n"); 
text = text.Replace("\\", "\\\\").Replace("\"", "\\\""); 
return "\"" + text + "\""; 

或者,如果你想有一個逐字直譯,那麼你只需要逃避報價:

text = text.Replace("\"", "\"\"") 
return "@\"" + text + "\""; 
+0

感謝您的反饋..其非常感謝 – 2010-01-09 15:17:09

相關問題