掌握 C# 字符串:基础、操作与进阶技巧完全指南
掌握 C# 字符串:基础、操作与进阶技巧
本教程通过示例讲解 C# 字符串及其常用方法。
在 C# 中,字符串是字符序列。例如 "hello" 包含字符 'h'、'e'、'l'、'l'、'o'。
使用 string 关键字创建字符串:
// 创建字符串
string str = "C# Programming";
此处创建名为 str 的 string,赋值 "C# Programming"。C# 用双引号表示字符串。
示例:创建字符串
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
// 创建字符串
string str1 = "C# Programming";
string str2 = "Programiz";
// 打印字符串
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.ReadLine();
}
}
}
输出
C# Programming Programiz
创建了 str1、str2 并打印。
注意:C# 字符串变量非 int、char 等基元类型,而是 String 类的对象。
字符串操作
C# string 提供多种方法执行不同操作。我们看一些常用操作。
1. 获取字符串长度
使用 Length 属性:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str = "C# Programming";
Console.WriteLine("string: " + str);
int length = str.Length;
Console.WriteLine("Length: " + length);
Console.ReadLine();
}
}
}
输出
string: C# Programming Length: 14
Length 属性计算字符总数并返回。
2. 连接两个字符串
使用 Concat() 方法连接:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str1 = "C# ";
Console.WriteLine("string str1: " + str1);
string str2 = "Programming";
Console.WriteLine("string str2: " + str2);
string joinedString = string.Concat(str1, str2);
Console.WriteLine("Joined string: " + joinedString);
Console.ReadLine();
}
}
}
输出
string str1: C# string str2: Programming Joined string: C# Programming
语句 string joinedString = string.Concat(str1, str2); 将 str1 与 str2 连接赋给 joinedString。
也可用 + 运算符连接。详见 C# string Concat。
3. 比较两个字符串
用 Equals() 方法比较:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str1 = "C# Programming";
string str2 = "C# Programming";
string str3 = "Programiz";
Boolean result1 = str1.Equals(str2);
Console.WriteLine("string str1 and str2 are equal: " + result1);
Boolean result2 = str1.Equals(str3);
Console.WriteLine("string str1 and str3 are equal: " + result2);
Console.ReadLine();
}
}
}
输出
string str1 and str2 are equal: True string str1 and str3 are equal: False
创建 str1、str2、str3,用 Equals() 判断相等。
字符串对象的不可变性
C# 字符串不可变。一旦创建,无法改变该字符串。
举例:
// 创建字符串
string str = "Hello ";
str 持有 "Hello "。
现想修改 str:
// 添加 "World"
str = string.Concat(str, "World");
使用 Concat() 添加 "World"。
但字符串不可变,为何能修改?
实际发生过程:
- C# 取
"Hello "的值。 - 创建新字符串,将
"World"追加到"Hello "。 - 创建新字符串对象,值为
"Hello World",存入 str。 - 原字符串
"Hello "因无其他引用被释放供 GC 回收。
字符串转义序列
转义字符用于在字符串中插入特殊字符。
假设需在字符串中包含双引号:
// 包含双引号
string str = "This is the "String" class";
因双引号标识字符串,编译器会将 "This is the " 视为字符串,导致错误。
解决方法:使用转义字符 \":
// 使用转义字符
string str = "This is the \"String\" class.";
在双引号前加 \ 即可包含它。
常用转义序列:
| 转义序列 | 字符名称 |
|---|---|
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
\0 | 空字符 |
\n | 换行 |
\t | 水平制表 |
字符串插值
C# 支持字符串插值在字符串中嵌入变量。字符串字面量须以 $ 开头。示例:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string name = "Programiz";
// 字符串插值
string message = $"Welcome to {name}";
Console.WriteLine(message);
Console.ReadLine();
}
}
}
输出
Welcome to Programiz
name 变量嵌入 message 字符串:
string message = $"Welcome to {name}";
注意:
- 字符串以
$开头 - 变量置于花括号
{}内
C# 字符串常用方法
C# 字符串方法众多,常用者列表:
| 方法 | 说明 |
|---|---|
Format() | 返回格式化字符串 |
Split() | 按分隔符拆分为子串 |
Substring() | 返回子串 |
Compare() | 比较字符串对象 |
Replace() | 替换指定字符 |
Contains() | 检查是否包含子串 |
Join() | 用指定分隔符连接字符串 |
Trim() | 移除首尾空白 |
EndsWith() | 检查是否以指定串结尾 |
IndexOf() | 返回指定字符位置 |
Remove() | 移除指定位置字符 |
ToUpper() | 转大写 |
ToLower() | 转小写 |
PadLeft() | 左侧填充 |
PadRight() | 右侧填充 |
StartsWith() | 检查是否以指定串开头 |
ToCharArray() | 转为 char 数组 |
LastIndexOf() | 返回最后一次出现位置 |
常见问题
1. 如何在 C# 中创建字符串数组?
字符串数组创建同其他类型数组。例如:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
// 字符串类型数组
string[] animals = {"Monkey", "Dog", "Cat"};
// 打印数组元素
Console.WriteLine(animals[0]);
Console.WriteLine(animals[1]);
Console.WriteLine(animals[2]);
Console.ReadLine();
}
}
}
输出
Monkey Dog Cat
2. C# 中 string 与 String 的区别
string 与 String 无技术差异。string 是 System.String 的别名。
推荐使用 string,因无需 using System; 即可工作。
C语言
- C++ 字符串函数实战:strcpy、strcat、strlen、strcmp 详解与示例
- C 语言字符串完全指南:声明、输入输出与库函数详解
- Python strip() 方法完全指南:去除首尾空白与自定义字符实战
- Python str.count() 完全指南:统计字符与子串出现次数实战
- Python format() 字符串格式化完全指南:占位符、格式化规范、类与字典应用
- Python len() 函数实战指南:测量字符串、列表、元组、字典等对象长度
- Python 字符串 find() 方法完全指南:语法、参数、替代方案与计数技巧
- 精通 Java 字符串:创建、方法与最佳实践
- 精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式
- Java String.charAt() 详解:语法、返回类型、异常与实战示例
- 精通 Java String.endsWith():检查字符串后缀(示例)
- Java 8 概览:函数式编程、流式 API 与日期时间新特性