Skip to main content

常用字符串API

在C#中,字符串是一个非常重要的数据类型,它提供了丰富的API(应用程序接口)来处理和操作字符串。工作的时候我们可以直接用 AI 的方式来进行搜索,不建议死记硬背,用到了再查,这块内容混个脸熟即可。

以下是我列举的一些常用的字符串API的详细说明:

常用 API

1. 字符串的创建和赋值

string str = "Hello, World!"; // 直接赋值  
string str2 = new string('c', 5); // 使用字符和长度创建字符串,这里将创建字符串"ccccc"

2. 字符串连接

string str3 = str + " " + str2; // 使用+操作符连接字符串  
string str4 = String.Concat(str, " ", str2); // 使用String.Concat方法连接字符串

2. 字符串比较

bool isEqual = str.Equals(str3); // 比较两个字符串是否相等  
int comparison = str.CompareTo(str3); // 比较两个字符串,返回它们的字典顺序差异
int compareResult = String.Compare(str, str3); // 另一种比较字符串的方法

3. 字符串查找

int index = str.IndexOf('o'); // 查找字符'o'首次出现的位置  
int lastIndex = str.LastIndexOf('l'); // 查找字符'l'最后出现的位置
bool contains = str.Contains("World"); // 检查字符串是否包含子字符串"World"

4. 字符串替换

string replacedStr = str.Replace("World", "C#"); // 将"World"替换为"C#"

5. 字符串分割

string[] parts = str.Split(' '); // 使用空格分割字符串  
string[] parts2 = str.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); // 使用多个字符分割字符串,并移除空条目

6. 字符串的格式化

string formatted = String.Format("Hello, {0}!", "C#"); // 使用String.Format进行格式化  
string interpolated = $"Hello, {name}!"; // 使用C# 6.0及以后的字符串插值进行格式化

7. 字符串的大小写转换

string lower = str.ToLower(); // 转换为小写  
string upper = str.ToUpper(); // 转换为大写

8. 字符串的去除空白

string trimmed = str.Trim(); // 去除字符串两端的空白字符  
string trimmedStart = str.TrimStart(); // 去除字符串开头的空白字符
string trimmedEnd = str.TrimEnd(); // 去除字符串末尾的空白字符

9. 字符串的插入和移除

string inserted = str.Insert(5, "Beautiful "); // 在索引5的位置插入字符串"Beautiful "  
string removed = str.Remove(7, 5); // 从索引7开始移除5个字符

10. 字符串的复制和填充

string repeated = new string(str[0], 10); // 复制字符串的第一个字符10次  
string padded = str.PadLeft(15); // 在字符串左侧填充空格,直到总长度为15
string paddedRight = str.PadRight(15, '*'); // 在字符串右侧填充'*',直到总长度为15

11. 字符串的子串获取

string substring = str.Substring(2, 4); // 从索引2开始获取长度为4的子串

这些API为开发者提供了在C#中处理和操作字符串的丰富功能。它们使得字符串处理变得更加简单、高效和灵活。根据具体的应用场景,可以选择适合的API来实现所需的功能。

12. EndsWith()

在C#中,EndsWith() 是 string 类的一个方法,用于确定字符串的末尾是否匹配指定的子字符串。如果字符串的末尾匹配指定的值,则 EndsWith() 方法返回 true;否则返回 false。

EndsWith() 方法有几个重载版本,允许你指定比较是否应该区分大小写,以及是否应该考虑字符串的末尾是否存在空白字符。

下面是一些使用 EndsWith() 方法的例子:

string fileName = "example.txt";  

bool endsWithTxt = fileName.EndsWith(".txt"); // 返回 true
bool endsWithDoc = fileName.EndsWith(".doc"); // 返回 false

// 使用重载版本,指定不区分大小写
bool endsWithTxtIgnoreCase = fileName.EndsWith(".TXT", StringComparison.OrdinalIgnoreCase); // 返回 true

在这个例子中,endsWithTxt 变量将被设置为 true,因为 fileName 字符串以 ".txt" 结尾。而 endsWithDoc 变量将被设置为 false,因为 fileName 字符串不以 ".doc" 结尾。

StringComparison.OrdinalIgnoreCase 是一个枚举值,用于指定在比较字符串时忽略大小写。因此,endsWithTxtIgnoreCase 也将被设置为 true,即使我们检查的是大写形式的 ".TXT"。

这个方法在处理文件路径、URL或任何需要基于字符串结尾进行条件判断的场景中非常有用。

string

string.Format()

在C#中,string.Format() 是一个非常有用的方法,用于将指定的格式字符串与指定的参数列表组合起来,生成一个格式化的字符串。它允许你插入和格式化各种类型的数据,如整数、浮点数、日期和时间、枚举等。

以下是 string.Format() 方法的一些基本用法和代码示例:

1. 基本用法

string format = "Hello, {0}! Today is {1}.";  
string result = string.Format(format, "Alice", DateTime.Now.ToShortDateString());
Console.WriteLine(result); // 输出:Hello, Alice! Today is 2023-03-15.

在这个例子中,01 是占位符,它们分别被后面的参数 "Alice" 和 DateTime.Now.ToShortDateString() 替换。

2. 使用索引

你可以通过索引指定参数的顺序。这在参数列表较长时特别有用,因为它允许你以任何顺序插入参数。

string format = "The sum of {1} and {0} is {2}.";  
int a = 5;
int b = 10;
int sum = a + b;
string result = string.Format(format, a, b, sum);
Console.WriteLine(result); // 输出:The sum of 10 and 5 is 15.

3. 格式化数字

你可以使用格式字符串来指定数字的格式。

double pi = 3.141592653589793;  
string piString = string.Format("Pi is approximately {0:F2}.", pi);
Console.WriteLine(piString); // 输出:Pi is approximately 3.14.

在这个例子中,{0:F2} 表示将第一个参数(pi)格式化为带有两位小数的浮点数。

4. 格式化日期和时间

日期和时间也可以格式化。

DateTime now = DateTime.Now;  
string formattedDate = string.Format("Today is {0:yyyy-MM-dd}.", now);
Console.WriteLine(formattedDate); // 输出:Today is 2023-03-15.

5. 自定义格式字符串

你还可以创建自定义的格式字符串来控制输出的精确格式。

int number = -12345;  
string formattedNumber = string.Format("The number is {0:N0}.", number);
Console.WriteLine(formattedNumber); // 输出:The number is -12,345.

在这个例子中,{0:N0} 将数字格式化为带有千位分隔符但不包含小数部分的字符串。

6. 复合格式化

你还可以组合使用不同的格式选项。

double value = 12345.6789;  
string message = string.Format("Value: {0:N2} (Hex: {0:X8})", value);
Console.WriteLine(message); // 输出:Value: 12,345.68 (Hex: 30394629)

在这个例子中,{0:N2} 用于将值格式化为带有两位小数的货币字符串,而 {0:X8} 则将其格式化为8位十六进制数。

string.Format() 方法的功能非常强大且灵活,它可以根据你的需要生成几乎任何类型的格式化字符串。只需熟悉各种格式说明符,就可以创建出符合你要求的字符串。

C#中@是什么意思

在C#中,@ 符号有几个不同的用途,但最常见的是用于字符串文字前,作为“逐字字符串”的前缀。

1. 逐字字符串(Verbatim String Literals)

当你在字符串前使用 @ 符号时,你可以直接在字符串中编写多行文本,而不需要使用转义字符(\)来表示换行或特殊字符。这在编写包含大量文本或正则表达式的代码时特别有用。

例如:

string normalString = "This is a\nstring with a newline.";  
string verbatimString = @"This is a
string with a newline.";

这两个字符串是等效的。在verbatimString中,你可以看到我们直接写入了换行符,而不是使用 \n。

2. 标识符中的关键字

在C#中,有些关键字是不能用作变量名、类名等标识符的。但是,如果你确实需要使用这些关键字作为标识符,你可以在它们前面加上 @ 符号。这通常是不推荐的,因为它可能会使代码难以阅读和维护。

例如:

@class MyClass { } // 这不是推荐的做法,只是展示如何使用@来允许使用关键字作为标识符

3. 文件路径

在某些上下文中,@ 符号也用于文件路径,以避免对反斜杠(\)进行转义。这通常与逐字字符串一起使用。

例如:

string filePath = @"C:\Users\UserName\Documents\file.txt";

在这个例子中,@ 使得路径中的反斜杠被当作普通字符处理,而不是转义字符。

总之,@ 符号在C#中主要用于逐字字符串和在某些情况下用于允许关键字作为标识符。在编写代码时,理解它的用法和上下文是很重要的。