1. 更深入了解string类型
string类型是C#里用得最多的类型之一。也许就是用得最多的。这个类型真的很棒,因为你可以在这种变量里存文本。而且,和int、double这些类型不一样,string对象有一堆各种各样的函数,用这些函数可以做很多有趣的事。
另外,C#里所有对象(真的所有)都可以转成string类型。或者说,更准确点,C#里所有对象都能返回自己的文本(字符串)表示。我们以后还会多次回到这个类型(它真的很有用也很有意思),不过今天先来了解下它的基础。
创建string类型的变量
string类型就是用来存字符串(文本)的。要在代码里创建一个能存文本的变量,你得用这个命令:
string 名字;
这里名字就是变量名。
例子:
| 命令 | 说明 |
|---|---|
| string name; | 创建了字符串变量name |
| string message; | 创建了字符串变量message |
| string text; | 创建了字符串变量text |
就像int和double类型一样,也可以用简写方式一次创建多个string类型变量:
string 名字1, 名字2, 名字3;
2. 给string类型变量赋值
要给string类型变量赋值,你得用这个命令:
名字 = "值";
这就是和之前学过的类型的第一个区别。所有string类型的值都是文本字符串,必须用双引号括起来。
例子:
| 命令 | 备注 |
|---|---|
| string name = "安雅"; | 变量name里存着文本安雅 |
| string city = "New York"; | 变量city里存着文本New York |
| string message = "Hello!"; | 变量message里存着文本Hello! |
3. 初始化string类型变量
和int、double类型一样,string类型的变量也可以在创建时直接初始化。其实C#里所有类型都可以这样做。所以以后我们就不再特别说这个了。
string 名字1 = "字符串1", 名字2 = "字符串2";
创建和初始化变量的例子
string name = "安雅", city = "New York", message = "Hello!";
只有有值的变量才能用
如果你声明了一个变量但没给它赋值就用,C#编译器会报错。
这种代码是跑不起来的:
string name;
Console.WriteLine(name); // 变量name没有初始化。程序不会编译通过。
int a;
a++; // 变量a没有初始化。程序不会编译通过。
double x;
double y = x; // 变量x没有初始化。程序不会编译通过。
4. 拼接字符串(连接字符串)
有个很有趣又简单的事可以用C#里的字符串做——把它们拼起来。这种操作叫拼接。你也可以记成“拼-接-串”。不过大家一般都叫“字符串拼接”或者直接“字符串加法”。
要拼接两个字符串,用+号就行。超级简单:
"值1" + "值2"
例子:
| 命令 | 备注 |
|---|---|
| string name = "安雅" + "安雅"; | name里是字符串安雅安雅 |
| string city = "New York" + "安雅"; | city里是字符串New York安雅 |
| string message = "Hello! " + "安雅"; | message里是字符串Hello! 安雅 |
当然啦,你可以一次拼很多字符串,也可以拼字符串和变量。
例子:
string name = "安雅"; // name里是字符串安雅
string city = "New York"; // city里是字符串New York
string message = "Hello!" + city + name + city; // message里是字符串Hello!New York安雅New York
5. 空字符串
在上面那个例子里你会发现,message变量里的文本看起来不太好读,因为中间没空格。要加一个或多个空格,只要在代码里写出来并用双引号括起来就行。其实很简单:
" "
顺便说下,如果引号里啥都不写(就是两个双引号连着),那就是所谓的“空字符串”:
""
一方面它确实存在,但另一方面,输出到屏幕时啥都不会显示。和别的字符串拼接时也啥都不会发生。就像字符串里的“零”一样。
6. 字符串里的特殊字符转义
你已经知道字符串要用双引号括起来。但如果你想在字符串里加引号怎么办?如果直接写引号,编译器会不会以为那是字符串的结尾?
没错,会的。所以字符串里的引号要用\"来写。代码会像这样:
string quote = "他说:\"你好!\"";
Console.WriteLine(quote); // 他说:"你好!"
其实还有点小技巧。\这个符号在字符串里是特殊(控制)字符。用它可以写各种“不可见字符”,比如换行、制表符啥的。要想写出\本身,就得写两个。
下面这4个是最常用的组合:
| 写法 | 意思 |
|---|---|
| \n | 换行(newline) |
| \t | 制表符(缩进) |
| \\ | 字面上的\ |
| \" | 字符串里的引号 |
例子:
string multiline = "字符串1\n字符串2";
Console.WriteLine(multiline);
输出:
// 字符串1
// 字符串2
7. 字符串插值($字符串)
C#是个很现代的语言,它让你可以很方便地把变量的值插进字符串里,只要在引号前加个$,然后在字符串里用大括号{}。你应该已经知道这个了。
不过你可能还不知道,大括号里其实可以写完整的表达式,甚至还能调用函数!例子:
string name = "欧莉娅";
int birthYear = 1999;
string info = $"我叫{name},我{2025-birthYear}岁。";
Console.WriteLine(info); // 我叫欧莉娅,我26岁。
这种写法让代码更好读,也更少出错(括号也少了)。插值的细节我们以后会专门讲,不过简单用法现在就可以放心用了。
8. 字符串自带的方法
string类型有自己的方法(也叫函数)。方法超多,能让程序员省不少事。今天先认识几个最简单的。例子:
| 方法 | 说明 | 结果例子 |
|---|---|---|
| str.Length | 字符串长度 | "abc".Length → 3 |
| str.ToUpper() | 转成大写 | "abc".ToUpper() → "ABC" |
| str.ToLower() | 转成小写 | "ABC".ToLower() → "abc" |
| str.Trim() | 去掉两边的空格 | " x y ".Trim() → "x y" |
字符串方法的例子
这些方法都是这样用的:变量.方法(...)。
获取字符串长度:
string name = "安德烈";
int length = name.Length;
Console.WriteLine(length); // 6,因为有6个字母
把字符串转成大写或小写:
string original = "你好";
Console.WriteLine(original.ToUpper()); // 你好
Console.WriteLine(original.ToLower()); // 你好
去掉两边的空格(输入时很有用):
string messy = " hello ";
Console.WriteLine(messy.Trim()); // "hello"
每个方法都会返回一个新字符串,原来的字符串不会变。
GO TO FULL VERSION