C#語法文字字面量
C#語法文字字面量
在日常生活中,文字用來表示除了數字以外的內容。例如有一個叫“比爾”的人,他的職位為“科長”。那麼,“比爾”和“科長”都可以稱為文字。在計算機裡,現實世界中的文字通常被稱為字元和字串。例如,“比爾”中的每個漢字都是一個字元。而整體構成一個字串。“科長”也是如此。
字元和字串的寫作規範
上面,我們看到的是常見的文字字面量。但是,很多時候數字內容表達的並不一定是數值。例如,比爾的電話號碼是13466668888。對於“13466668888”來說,我們不會理解為一百三十四億六千六百六十六萬八千八百八十八,而是當成一個電話號來理解。由於計算機能力有限,為了避免這類資訊對計算機造成困擾,程式對字元和字串的表示有以下規定:
- 字元是由單引號(')括起來的單個的字母、數字、字或者符號。
- 字串可以表示一個字元序列。
- 字串使用一對雙引號(")與多個字元組合。
- 字串的雙引號中可以有任意多個字元。
根據這個規範,如果要在程式中表示字母a,需要寫為'a'。字元中只能包含一個字元,因此字元'a'長度為1。如果要在程式中表示比爾的電話號碼,必須寫為"13466668888"。該字串的長度為11,因為包含的字元個數為11,而雙引號是字串格式符號,不能算作字串長度數。
特殊的字元和字串——跳脫字元
有時候,需要在字串中使用特殊字元,例如字串abc"s。在程式碼中字串"abc"s"會產生錯誤,編譯器無法辨認字串的具體內容。為了解決這個問題,需要使用跳脫字元。跳脫字元透過反斜槓“\”與普通字元的組合,來表示一些特殊的字元。跳脫字元中至少包含兩個字元,第一個字元是轉義符號“\”,第二個字元是需要表示的字元。常用的跳脫字元有兩種:表示格式的跳脫字元和表示控制程式碼的跳脫字元。
1.表示格式
為了構成字元和字串,使用了雙引號(")和單引號(')。而為了構成跳脫字元,又使用了反斜槓(\)。如果字串中需要包含這三個字元,需要使用跳脫字元如表1.1所示。
表1.1 表示格式的跳脫字元列表
轉義序列 |
產生的字元 |
\' |
單引號 |
\" |
雙引號 |
\\ |
反斜槓 |
【示例1-4】有下列文字內容,需要在程式中使用字串表示。
I love C#.
I’m studying C#.
在這個文字內容中,第一行內容表達為字串為"I love C#.",該字串長度為10(空格與.都算作一個字元)。而第二行內容中有一個單引號,所以需要使用跳脫字元表達為"I\'m studying C#.",該字串長度為16。
2.表示控制程式碼
在文字資料中,會出現一些特殊的符號,如換行符、退格等。這些符號無法看到,但是用來控制文字的格式。這類字元由於無法書寫,所以必須使用跳脫字元表示如表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 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2145799/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#語法浮點型字面量C#
- Go語言的識別符號、關鍵字、字面量、型別Go符號型別
- JavaScript 模板字面量JavaScript
- Mermaid語法文件AI
- JS語言精粹學習筆記--物件字面量JS筆記物件
- Swift 字面量講解Swift
- TypeScript 字面量型別TypeScript型別
- 理解 Go 語言中的組合字面量(Composite Literal)Go
- C#知識點之字串格式化,字面量,轉義符C#字串格式化
- JavaScript 模板字面量標籤JavaScript
- JavaScript 物件字面量(object literal)JavaScript物件Object
- TypeScript 字串字面量型別TypeScript字串型別
- 多用字面量語法, 少用與之等價的方法
- TypeScript 之模板字面量型別TypeScript型別
- 03@多用字面量語法,少用與之等價的方法
- PLSQL Language Reference-PL/SQL語言基礎-詞彙單元-字面量SQL
- js學習日記-物件字面量JS物件
- javascript中字面量是什麼意思JavaScript
- C語言語法文字結構—接近完整版本C語言
- JavaScript 反引號模板字面量巢狀JavaScript巢狀
- TypeScript 中的字面量是什麼意思TypeScript
- C#漢字轉漢語拼音C#
- 第七章——字串(字串字面量轉換)字串
- 使用字面量或者繫結變數在HANA Studio裡執行SQL語句變數SQL
- 為什麼我要說 JavaScript 物件字面量很酷?JavaScript物件
- 要點1:指標、陣列和複合字面量指標陣列
- JavaScript十六進位制和八進位制字面量JavaScript
- H264引數語法文件: SPS、PPS、IDR
- JavaScript物件字面量屬性加不加引號的區別JavaScript物件
- C#給字串賦予字面值——字串插入、轉義序列的使用C#字串
- 整型字元常量和字元字面量的區別 sizeof(char) 和 sizeof('a')字元
- JS:關於JS字面量及其容易忽略的12個小問題JS
- 斬獲BAT-offer大神的兩萬字面試乾貨分享BAT面試
- c語言字面值知識體系總結大學霸IT達人C語言
- c#關鍵字C#
- TypeScript 官方手冊翻譯計劃【十一】:型別操控-模板字面量型別TypeScript型別
- 遊戲常用到的sdk及介面方法文件遊戲
- 程式設計師的10句跟字面意思完全不同的常用語程式設計師