一、转义字符
C#允许按常规的转义字符处理的方式来给字符串常量赋值,如果编译器检测到你正在为一个字符串变量赋值,你在其中写的双斜扛将不会被当作注释符。例如,下面的赋值是合法的,我们可以通过下面的赋值语句给变量赋予带有双斜杠的值:
string DbSlashURL = "http://www.ciznx.com/";
string DbEscapeFullFilePath = "C:\\inetput\\ciznxcom\\"; //带转义的字符串赋值语句
这里列举一些常用的转义字符,备查:
转义符 | 字 符 名 | 字符的Unicode值 | 转义符 | 字 符 名 | 字符的Unicode值 | \' | 单引号 | 0x0027 | \f | 换页 | 0x000c | \" | 双引号 | 0x0022 | \n | 新行 | 0x000A | \\ | 反斜杠 | 0x005c | \r | 回车 | 0x000D | \0 | 空字符 | 0x0000 | \t | 水平制表符 | 0x0009 | \a | 警告(产生蜂鸣) | 0x0007 | \v | 垂直制表符 | 0x000B | \b | 退格 | 0x0008 |
| | |
二、逐字字符串
更加令我们欣喜的是,C#的作者很大方地将字符串赋值这一功能做了十分广阔的扩展:在C#中,我们可以将所有字符直接作为字符串常量的值赋给字符串量,甚至包括了平时在我们看来是一定需要转义的各种字符;要实现这一切仅需要在字符串常量的值前加一个符号“@”,以这种形式赋值的字符串叫做逐字字符串,它后面的所有字符都被逐个地收录到字符串的值中!
因此,如果你需要类似“所见所得”效果的赋值,逐字字符串赋值方式会是你的首选!
此外,需要注意的是,当使用符号 "@" 为字符串赋值时,被赋值的所有字符将不需要经过转义——只有双引号这个本身作为界限的字符需要经过转义,此时它的转义输入方法是两个放在一起的双引号:""
在以这种方式给变量赋值时,也只有这唯一一个转义是合法的。如果希望诸如换行、制表符此类字符在字符串体现出来,也可以直接将带有换行与制表符的字面量字符串赋给字符串量;不过这样,就不能在换行前的前一行写注释或其他语句,否则这些语句将被当作字符串值的一部分。
在下面例子中的语句,可以实现不完成输入一系列不经转义的特殊字符:
(1) 逐字:
string NoEscapeFullFileName = @"C:\inetpub\ciznxcom\"; // (此句中的反斜扛被直接赋值) (2)双引号:
string StringWithDbQoute = @"Jim says,""he can reach home in about six minutes""." //(此句中双引号被转义) (3)换行: 相当于加一个回车\r 而不是\n
string StringWithNextLineChar = @"We can set a string value for a string variable
with such a ""NextLine"" char."; // (此句中给字符串变量赋予了回车符,且未经任何转义;并且保持所有空格)
|