C# 字符串完全指南:创建、属性、常用方法与实战技巧
C# 中可将字符串视为字符数组,但更常用 string 关键字声明字符串变量。string 是 System.String 类的别名。
创建字符串对象
五种常见创建方式:
- 字符串字面量赋值
String类构造函数- 字符串连接运算符
+ - 获取返回字符串的属性或调用方法
- 格式化方法转换值或对象为字符串表示
综合示例
using System;
namespace StringApplication {
class Program {
static void Main(string[] args) {
// 字面量与连接
string fname = "Rowan", lname = "Atkinson";
string fullname = fname + lname;
Console.WriteLine("Full Name: {0}", fullname); // RowanAtkinson
// 构造函数
char[] letters = { 'H', 'e', 'l', 'l', 'o' };
string greetings = new string(letters);
Console.WriteLine("Greetings: {0}", greetings); // Hello
// 方法返回字符串
string[] sarray = { "Hello", "From", "Tutorials", "Point" };
string message = String.Join(" ", sarray);
Console.WriteLine("Message: {0}", message); // Hello From Tutorials Point
// 格式化方法
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
Console.WriteLine("Message: {0}", chat); // Message sent at 5:58 PM on Wednesday, October 10, 2012
}
}
}
String 类属性
| 序号 | 属性及说明 |
|---|---|
| 1 | Chars:获取指定位置的 Char 对象 |
| 2 | Length:获取当前字符串对象字符数 |
String 类常用方法(精选 36 个)
| 序号 | 方法及说明 |
|---|---|
| 1 | Compare(strA, strB):比较两字符串,返回排序位置指示整数 |
| 2 | Compare(strA, strB, ignoreCase):忽略大小写比较 |
| 3-5 | Concat:连接 2/3/4 个字符串 |
| 6 | Contains(value):判断是否包含指定子串 |
| 7 | Copy(str):创建相同值的新字符串 |
| 8 | CopyTo(...):复制字符到 Unicode 字符数组 |
| 9 | EndsWith(value):判断是否以指定字符串结尾 |
| 10 | Equals(value):判断当前字符串与指定字符串值是否相等 |
| 11 | Equals(a, b):静态比较两字符串值 |
| 12 | Format(format, arg0):格式化字符串 |
| 13-16 | IndexOf:查找字符/子串首次出现位置(支持起始索引) |
| 17-18 | IndexOfAny:查找任意字符数组中字符首次出现位置 |
| 19 | Insert(startIndex, value):在指定位置插入字符串 |
| 20 | IsNullOrEmpty(value):判断是否为 null 或空字符串 |
| 21-22 | Join:用分隔符连接字符串数组元素 |
| 23-24 | LastIndexOf:查找字符/子串最后出现位置 |
| 25-26 | Remove:移除指定位置开始的字符 |
| 27 | Replace(oldChar, newChar):替换所有指定字符 |
| 28 | Replace(oldValue, newValue):替换所有指定子串 |
| 29-30 | Split:按分隔符拆分为子串数组 |
| 31 | StartsWith(value):判断是否以指定字符串开头 |
| 32-33 | ToCharArray:转 Unicode 字符数组 |
| 34 | ToLower():转小写副本 |
| 35 | ToUpper():转大写副本 |
| 36 | Trim():移除首尾空白字符 |
实战示例
字符串比较
string str1 = "This is test";
string str2 = "This is text";
if (String.Compare(str1, str2) == 0)
Console.WriteLine("equal");
else
Console.WriteLine("not equal"); // 输出 not equal
包含检查
string str = "This is test";
if (str.Contains("test"))
Console.WriteLine("Found"); // 输出 Found
获取子串
string str = "Last night I dreamt of San Pedro";
string substr = str.Substring(23);
Console.WriteLine(substr); // San Pedro
连接字符串
string[] starray = { "Line1", "Line2", "Line3" };
string str = String.Join("\n", starray);
Console.WriteLine(str); // 三行输出
性能提示
- 频繁拼接使用
StringBuilder避免频繁分配内存 String.IsNullOrEmpty/IsNullOrWhiteSpace替代手动判空- 区分大小写比较优先用
StringComparison.OrdinalIgnoreCase
C语言
- C# 类与对象:面向对象编程的基石
- 掌握 C# 字符串:基础、操作与进阶技巧完全指南
- C++ 字符串函数实战:strcpy、strcat、strlen、strcmp 详解与示例
- C 语言字符串完全指南:声明、输入输出与库函数详解
- MATLAB 字符串完全指南:创建、拼接、元胞数组与常用函数
- Python 字符串操作完全指南:替换、连接、分割、反转、大小写转换
- 精通 Java 字符串:创建、方法与最佳实践
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式
- Java Strings 类:掌握字符串创建与操作
- Java 对象序列化:持久化、反序列化与版本演进
- Java 8 概览:函数式编程、流式 API 与日期时间新特性