我是c#的新手,所以希望这对你们中的一些人来说不是太难。
我正在尝试构建一个包含\的字符串,即使我添加了额外的转义字符或忽略它们,我也很难得到一个反斜杠。有人能告诉我我做错了吗?
我希望我的字符串看起来像:
"10.20.14.103\sql08"
到目前为止我尝试过:
我添加了一个额外的字符以使编译器感到高兴,但它没有逃脱它。
ip = string.Format("{0}\\\\{1}", ip, instancename); // output has 2 \'s
我告诉它忽略逃避,它决定忽略我
string temp = @"192.168.1.200\sql08"; // output has 2 \'s
有人可以帮助我理解这个吗? (这里的richtext编辑器似乎比VS2010做得更好,哈哈)
答案 0 :(得分:13)
我猜测你对调试器感到困惑。
如果将鼠标悬停在VS中的本地变量上,字符串将被转义,因此单个\
将显示为\\
。
要查看您的字符串真正是什么,请将其输出到某处以供显示(例如,输出到控制台)或将鼠标悬停在变量上,单击出现的小放大镜旁边的箭头,然后选择“Text Visualizer。”
答案 1 :(得分:4)
如果您在调试器中查看这些字符串(即,将鼠标悬停在变量上或使用监视器),调试器会将转义字符添加到显示字符串,以便它是一个有效的字符串表达式< / em>的。如果要以这种方式逐字查看字符串,请单击工具提示右侧的放大镜或观察其中包含字符串的条目。
答案 2 :(得分:3)
我猜你正在查看调试器中的值并看到它们有两个斜杠。
这是正常的。调试器将显示两个斜杠,即使实际的字符串表示只有一个。在习惯调试器时,只需要另一个驼峰。
请放心,当您实际使用字符串时,它们仍然只有一个斜杠(使用您的任何一种方法)。
答案 3 :(得分:1)
string requiredString = string.Format(@"{0}\\{1}",str1,str2);