Visual Studio中有没有办法将文本转换为C#字符串文字?

时间:2010-05-25 17:32:11

标签: c# visual-studio macros

在Visual Studio中是否有办法将文本转换为C#字符串文字并返回?

例如,如果我有文字:

Lorem ipsum dolor sit amet, consectetuer adipiscing 
elit, sed diam nonummy nibh euismod tincidunt ut 
laoreet dolore magna aliquam erat volutpat.

我可以轻松将其转换为:

"Lorem ipsum dolor sit amet, consectetuer adipiscing\n" + 
"elit, sed diam nonummy nibh euismod tincidunt ut\n" +
"laoreet dolore magna aliquam erat volutpat."

然后使用宏或某些实用程序将其转换回来?

8 个答案:

答案 0 :(得分:6)

你知道你可以做到

@"Lorem ipsum dolor sit amet, consectetuer adipiscing  
elit, sed diam nonummy nibh euismod tincidunt ut  
laoreet dolore magna aliquam erat volutpat."

正确? @ -strings(a.k.a。“verbatim string literals”)可以包含换行符。

答案 1 :(得分:2)

答案 2 :(得分:2)

在Visual Studio 2013中,您可以通过扩展和更新安装“SmartPaster2013”​​。

答案 3 :(得分:1)

如果你在字符串前加上@,你可以得到类似的东西:

string lorem = @"Lorem ipsum dolor sit amet, consectetuer adipiscing 
elit, sed diam nonummy nibh euismod tincidunt ut 
laoreet dolore magna aliquam erat volutpat.";

这将保留空白。

答案 4 :(得分:0)

DevExpress CodeRush可以do this

答案 5 :(得分:0)

是。使用:

string s = @"Lorem ipsum dolor sit amet, consectetuer adipiscing  
elit, sed diam nonummy nibh euismod tincidunt ut  
laoreet dolore magna aliquam erat volutpat. 
";

答案 6 :(得分:0)

如果您不介意额外的空格,可以将其括在引号中,并在开头包含@符号,表示“文字”。像这样:

string s = @"Lorem ipsum dolor sit amet, consectetuer adipiscing 
elit, sed diam nonummy nibh euismod tincidunt ut 
laoreet dolore magna aliquam erat volutpat.";

答案 7 :(得分:0)

如果您使用的是Visual Studio,则可以将值加载到变量中,然后通过双击从“局部窗口”复制,使其突出显示为文本

这样做有点烦躁,但可以做到。

或者你写了一个冗长乏味的功能,比如这个

static string ToCodeString(string s)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();

        char c;
        int i = 0;

        while (i < s.Length)
        {
            c = (char)s[i];

            if (c == 34 || c == 92 || c == 93) //speechmarks backslash
            {
                sb.Append("\\" + c);
            }
            else if (c == 13)
            {
                sb.Append("\\r");
            }
            else if (c == 10)
            {
                sb.Append("\\n");
            }
            else if (c == 0)
            {
                sb.Append("\\0");
            }
            else if (c == 7)
            {
                sb.Append("\\a");
            }
            else if (c == 8)
            {
                sb.Append("\\b");
            }
            else if (c == 12)
            {
                sb.Append("\\f");
            }
            else if (c == 9)
            {
                sb.Append("\\t");
            }
            else if (c == 11)
            {
                sb.Append("\\v");
            }
            else if (c >= 32 && c <= 127) //ascii
            {
                sb.Append(c);
            }
            //else <-- if you want to represent unicode in ascii
            //{
            //    sb.Append(string.Format(@"\u{0:x4}", (int)c));
            //}
            else
            {
                sb.Append(c);
            }
            i++;
        }

        return sb.ToString();
}