2010-01-09 37 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

相关问题