[英]Console.Writeline escape character from variable
我有一个扩展方法,可以通过某种加密将ulong
转换为字符串值。 我想通过使用Console.WriteLine
原样输出它们,在大多数情况下都可以使用,但是转义符的值存在问题。 例如, "(V\\\\\\|RN"
仅输出"(V\\|RN"
。
var result = id.IdToCode();
Console.WriteLine(result);
要么
Console.WriteLine(id.IdToCode());
IdToCode
方法返回stringBuilder.ToString()
我尝试了很多组合,将@
放在某个地方以按原样返回字符串,但没有任何结果。 也许我应该重写Console.WriteLine
的默认行为或stringBuilder.ToString()
是这里的问题吗?
这是我的意思的屏幕。
在IdToCode
方法的代码下方:
public static string IdToCode(this ulong value)
{
const string charArray = @"1234890qwertyuiopbnmQWERTYUasdfghjklzxcvIOPASDFGHJKLZXCVBNM!+={}[]|\<>?@#567$%^&*()-_";
StringBuilder stringBuilder = new StringBuilder();
ulong num = value;
while (num != 0UL)
{
ulong index = num % (ulong)charArray.Length;
num /= (ulong)charArray.Length;
stringBuilder.Insert(0, charArray[(int)index].ToString());
}
return stringBuilder.ToString();
}
我已将char数组更改为另一个数组,但一般方法与上面相同。
问题是您需要在字符串文字前使用@
,这实际上会将反斜杠添加到StringBuilder
。
@id.IdToCode()
没有意义,因为返回string
时,它已经包含(V\\|RN
。工具提示显示为\\\\
因为它显示了转义的换行符-表示单个反斜杠。
可以肯定的是,问题不能在这里解决,而只能在实际发生的IdToCode
方法内部解决。
比较一下(与您的代码相同):
static void Main(string[] args)
{
var str = IdToCode();
Console.WriteLine();
}
public static string IdToCode()
{
return "(\\VN";
}
将鼠标悬停在str
我看到(\\\\VN
两个反斜杠,输出只是一个反斜杠-正确。
和这个:
static void Main(string[] args)
{
var str = IdToCode();
Console.WriteLine();
}
public static string IdToCode()
{
return @"(\\VN";
}
这里的工具提示显示"(\\\\\\\\VN"
,这也是正确的-有两个实际的反斜杠,并且控制台输出是所需的(\\\\VN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.