如何在C#中的字符串末尾添加符号
本文关键字:添加 符号 字符串 | 更新日期: 2023-09-27 17:59:23
请原谅我的一个初学者问题:)
string S="abc";
S+="'";
不会顺从。
string S="abc";
S+="''";
将使S="abc''''"
如何使S="abc"?
您的第二段代码是您想要的(或者像其他人建议的那样是逐字逐句的字符串文字@"'"
),它只添加了一个反斜杠-将其打印到控制台,您就会看到这一点。
这两段代码:
S += "''";
和
S += @"'";
是完全等效的。在这两种情况下,都会附加一个反斜杠1。
我怀疑您被调试器视图弄糊涂了,它转义了反斜杠(和其他一些字符)。即使使用调试器,也可以通过查看S.Length
来验证这一点,您会看到CCD_2是4而不是5。
1注意,它不会更改现有字符串中的数据,但它将S
的值设置为引用新字符串,该字符串由末尾带有反斜杠的原始字符串组成。中的字符串对象。NET是不可变的,但这是另一个主题。。。
试试这个:
String S = "abc";
S += @"'";
@
=逐字字符串文字
http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx
http://msdn.microsoft.com/en-us/library/vstudio/362314fe.aspx
string S = "abs" + "''";
应该并且确实导致abc'
。
您可能看到的是调试器/intellisense为您可视化字符串的方式。尝试将字符串打印到控制台或显示在文本框中。
您已经有了解决方案。它在调试时显示为abc''
的原因是VS将转义反斜杠,将S
的值打印到控制台窗口,您将看到abc'
。您可以在字符串文字的开头添加一个@
,例如
string S="abc";
S+= @"'";
这将达到同样的效果。
您可以用@字符转义反斜杠:
string S="abc";
S += @"'";
但这正是你在第二个例子中所写的内容。这方面的混乱源于Visual Studio调试器继续对这些字符进行转义,即使源字符串只包含一个反斜杠。
您的第二个示例是非常好的
string S="abc";
S+="''";
Visual studio显示字符串转义,这就是为什么您在结果字符串中看到两个斜杠的原因。如果你不想使用转义声明字符串像这个
@"'"
这不是在编译,因为编译器在转义符之后需要一个字符
string S="abc";
S+="'";
string S="abc";
S+="''";
Console.WriteLine(S); // This is what you're missing ;)
你会发现你的绳子一点都没有错。
反斜杠('
)是一个转义字符,它允许您获得通常无法插入字符串中的特殊字符,例如代表NewLine
字符的"'r'n"
,或基本上为您提供"
字符的CCD13。
为了获得'
字符,您需要输入"''"
,这正是您正在做的,也是您想要的。
使用逐字逐句(@
)将'
的所有出现替换为''
,因此@"'" == "''"
。这通常用于路径和正则表达式,其中需要大量的文本'
。说@"C:'MyDirectory'MyFile"
毕竟比说"C:''MyDirectory''MyFile"
舒服。
试试这个
string s="abc";
s = s+"''";