在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."
然后使用宏或某些实用程序将其转换回来?
答案 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();
}