代码之家  ›  专栏  ›  技术社区  ›  Roland Rabien

在VisualStudio中有没有一种方法可以将文本转换成C#字符串文字?

  •  1
  • Roland Rabien  · 技术社区  · 14 年前

    在VisualStudio中有没有一种方法可以将文本转换成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 回复  |  直到 14 年前
        1
  •  2
  •   Itay Karo    14 年前
        2
  •  7
  •   Brian    14 年前

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

        3
  •  2
  •   Wiebe Tijsma    10 年前

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

        4
  •  1
  •   MisterZimbu    14 年前

    如果用@作为字符串的前缀,则可以得到类似的结果:

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

    这将保留空白。

        5
  •  0
  •   SLaks    14 年前

    DevExpress CodeRush可以 do this

        6
  •  0
  •   Icemanind    14 年前

    对。用途:

    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
  •   JYelton Melchior Blausand    14 年前

    如果您不介意额外的空白,您可以将它括在引号中并包括 @ 开头的符号,意思是“文字”。如下所示:

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

    价值 从“局部变量”窗口双击,使其高亮显示为文本

    或者你写一个像这样冗长乏味的函数

    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();
    }