这篇文章主要为大家展示了“C#语法文本字面量的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#语法文本字面量的示例分析”这篇文章吧。
C#语法文本字面量
在日常生活中,文本用来表示除了数字以外的内容。例如有一个叫“比尔”的人,他的职位为“科长”。那么,“比尔”和“科长”都可以称为文本。在计算机里,现实世界中的文本通常被称为字符和字符串。例如,“比尔”中的每个汉字都是一个字符。而整体构成一个字符串。“科长”也是如此。
字符和字符串的写作规范
上面,我们看到的是常见的文本字面量。但是,很多时候数字内容表达的并不一定是数值。例如,比尔的电话号码是13466668888。对于“13466668888”来说,我们不会理解为一百三十四亿六千六百六十六万八千八百八十八,而是当成一个电话号来理解。由于计算机能力有限,为了避免这类信息对计算机造成困扰,程序对字符和字符串的表示有以下规定:
字符是由单引号(')括起来的单个的字母、数字、字或者符号。
字符串可以表示一个字符序列。
字符串使用一对双引号(")与多个字符组合。
字符串的双引号中可以有任意多个字符。
根据这个规范,如果要在程序中表示字母a,需要写为'a'。字符中只能包含一个字符,因此字符'a'长度为1。如果要在程序中表示比尔的电话号码,必须写为"13466668888"。该字符串的长度为11,因为包含的字符个数为11,而双引号是字符串格式符号,不能算作字符串长度数。
特殊的字符和字符串——转义字符
有时候,需要在字符串中使用特殊字符,例如字符串abc"s。在代码中字符串"abc"s"会产生错误,编译器无法辨认字符串的具体内容。为了解决这个问题,需要使用转义字符。转义字符通过反斜杠“\”与普通字符的组合,来表示一些特殊的字符。转义字符中至少包含两个字符,第一个字符是转义符号“\”,第二个字符是需要表示的字符。常用的转义字符有两种:表示格式的转义字符和表示控制代码的转义字符。
表示格式
为了构成字符和字符串,使用了双引号(")和单引号(')。而为了构成转义字符,又使用了反斜杠(\)。如果字符串中需要包含这三个字符,需要使用转义字符如表1.1所示。
表1.1 表示格式的转义字符列表
\' | |
\" | |
\\ |
【示例1-4】有下列文本内容,需要在程序中使用字符串表示。
I love C#.
I’m studying C#.
在这个文本内容中,第一行内容表达为字符串为"I love C#.",该字符串长度为10(空格与.都算作一个字符)。而第二行内容中有一个单引号,所以需要使用转义字符表达为"I\'m studying C#.",该字符串长度为16。
表示控制代码
在文本数据中,会出现一些特殊的符号,如换行符、退格等。这些符号无法看到,但是用来控制文本的格式。这类字符由于无法书写,所以必须使用转义字符表示如表1.2所示。
表1.2 表示控制代码的转义字符序列
\a | |
\b | |
\f | |
\n | |
\r | |
\t | |
\v |
示例1-4中由于两个文本内容不在同一行,所以之间必须有“\n”来表示换行。因此,这两个文本的正确表示形式为"I love C#.\n I\'m studying C#."。这个字符串的长度为27。
更全面的表达方式——ASCII表
转义字符可以解决大部分的字符表达。但是还是有很多字符无法直接书写,也没有对应的转义字符。这个时候,只能使用ASCII进行表达。ASCII是基于拉丁字母(26个英语字母)的一套电脑编码系统,是现在最通用的单字节编码系统。使用ASCII表示字符的格式如表1.3所示。
表1.3 使用ASCII表示的字符
\0 | |
\ddd | 1~3位八进制数所代表的任意字符 |
\xhh | 1~2位十六进制数所代表的任意字符 |
在表1.3中,使用八进制表示字符时可以表示1~3位八进制数代表的任意字符,即该类转义字符总长度为2~4。使用十六进制表示字符时可以表示1~2位十六进制数代表的任意字符,即该类转义字符总长度为3~4,因为表示十六进制数时“\x”以开头。
【示例1-5】以下代码中使用了转义字符:
'\x2f'
'\013'
其中,\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。
为了更加全面地表示,这里给出了ASCII表的字符的0~127。具体如表1.4所示。
表1.4 ASCII表
0 | 00 |
| 32 | 20 | [空格] | 64 | 40 | @ | 96 | 60 | ` |
1 | 01 |
| 33 | 21 | ! | 65 | 41 | A | 97 | 61 | a |
2 | 02 |
| 34 | 22 | " | 66 | 42 | B | 98 | 62 | b |
3 | 03 |
| 35 | 23 | # | 67 | 43 | C | 99 | 63 | c |
4 | 04 |
| 36 | 24 | $ | 68 | 44 | D | 100 | 64 | d |
5 | 05 |
| 37 | 25 | % | 69 | 45 | E | 101 | 65 | e |
6 | 06 |
| 38 | 26 | & | 70 | 46 | F | 102 | 66 | f |
7 | 07 |
| 39 | 27 | ' | 71 | 47 | G | 103 | 67 | g |
8 | 08 | \b | 40 | 28 | ( | 72 | 48 | H | 104 | 68 | h |
9 | 09 | \t | 41 | 29 | ) | 73 | 49 | I | 105 | 69 | i |
10 | 0A | \r | 42 | 2A | * | 74 | 4A | J | 106 | 6A | j |
11 | 0B |
| 43 | 2B | + | 75 | 4B | K | 107 | 6B | k |
12 | 0C |
| 44 | 2C | , | 76 | 4C | L | 108 | 6C | l |
13 | 0D | \n | 45 | 2D | - | 77 | 4D | M | 109 | 6D | m |
14 | 0E |
| 46 | 2E | . | 78 | 4E | N | 110 | 6E | n |
15 | 0F | ? | 47 | 2F | / | 79 | 4F | O | 111 | 6F | o |
16 | 10 | ? | 48 | 30 | 0 | 80 | 50 | P | 112 | 70 | p |
17 | 11 | ? | 49 | 31 | 1 | 81 | 51 | Q | 113 | 71 | q |
18 | 12 | ? | 50 | 32 | 2 | 82 | 52 | R | 114 | 72 | r |
19 | 13 | 51 | 33 | 3 | 83 | 53 | S | 115 | 73 | s | |
20 | 14 | 52 | 34 | 4 | 84 | 54 | T | 116 | 74 | t | |
21 | 15 | 53 | 35 | 5 | 85 | 55 | U | 117 | 75 | u | |
22 | 16 | ? | 54 | 36 | 6 | 86 | 56 | V | 118 | 76 | v |
23 | 17 | ? | 55 | 37 | 7 | 87 | 57 | W | 119 | 77 | w |
24 | 18 | ? | 56 | 38 | 8 | 88 | 58 | X | 120 | 78 | x |
25 | 19 | ? | 57 | 39 | 9 | 89 | 59 | Y | 121 | 79 | y |
26 | 1A | ? | 58 | 3A | : | 90 | 5A | Z | 122 | 7A | z |
27 | 1B | 59 | 3B | ; | 91 | 5B | [ | 123 | 7B | { | |
28 | 1C | ? | 60 | 3C | < | 92 | 5C | \ | 124 | 7C | | |
29 | 1D | ? | 61 | 3D | = | 93 | 5D | ] | 125 | 7D | } |
30 | 1E | - | 62 | 3E | > | 94 | 5E | ^ | 126 | 7E | ~ |
31 | 1F |
| 63 | 3F | ? | 95 | 5F | _ | 127 | 7F | ? |
表1.4中很多字符都是无法显示的,所以以空白显示。在编码中,可以通过反斜杠“\”与ASCII字符的十六进制数结合的方式使用字符。例如,“\n”与“\0D”起到的作用是一致的。但是大多数字符可以直接输出,不需要使用此种方式。
避免转义字符——@
在编程中,有时候字符的组合恰巧与转义字符相同,此时就需要使该组合中的转义字符失效。C#中有一个特殊的字符 “@”,该字符的作用是声明原义字符串,忽略转义字符的作用。
【示例1-6】假如想要表示一个地址“c:\temp”。当我们在代码中输出“c:\temp”时,显示结果如下:
c: emp
为什么会显示这样的一个结果呢?因为在“c:\temp”中,字符串中的“\t”被计算机识别成了转义字符,因此起的作用是水平制表符。在这种情况下,可以使用转义字符“\\”将反斜杠输出,让该字符串表示一个地址,表示方式为:
"c:\\temp"
这样的表示方式可以暂时解决眼前的简单的地址。但是,如果想要表示的地址很长很复杂,里面包含多个反斜杠时,这种书写方式就会非常繁琐。例如,需要表示的地址为“c:\temp\1\t\3\a\5”时,使用这种方式表示出来为:
"c:\\temp\\1\\t\\3\\a\\5"
上述这种表示方式非常繁琐,容易书写错误。因此,可以使用特殊符号@来屏蔽转义字符的作用。当我们想表示地址“c:\temp\1\t\3\a\5”时,只需要在地址前面加上特殊字符@即可,表示方式如下:
@"c:\temp\1\t\3\a\5"
字符串长度
上面我们学习了字符、字符串、转义字符等,接着我们来了解它们各自的字符长度。各种字符和字符串的类型、示例、长度及输出结果具体如表1.5所示:
表1.5 字符串长度
/字符串示例 | |||
'a' | 1 | a | |
"abc" | 3 | abc | |
"ab\'c" | 4 | ab'c | |
"ab\nc" | 4 | ab c | |
ASCII表示的字符串 | "ab\x22" | 3 | ab" |
@的字符串 | @"ab\x22" | 6 | ab\x22 |
以上是“C#语法文本字面量的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!