C# 字符串操作指南:长度、连接、插值、特殊字符和实用方法

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 字符串用于存储文本。一个字符串变量包含由双引号括起的字符集合

字符串用于存储文本。一个字符串变量包含由双引号括起的字符集合

示例:

// 创建一个string类型的变量并赋予一个值
string greeting = "Hello";

如果需要,一个字符串变量可以包含多个单词:

示例:

string greeting2 = "Nice to meet you!";

字符串长度

在 C# 中,字符串实际上是一个对象,其中包含可以在字符串上执行某些操作的属性和方法。例如,可以使用 Length 属性找到字符串的长度:

示例:

string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Console.WriteLine("txt字符串的长度是:" + txt.Length);

其他方法

有许多可用的字符串方法,例如 ToUpper()ToLower(),它们分别返回字符串转换为大写或小写的副本:

示例:

string txt = "Hello World";
Console.WriteLine(txt.ToUpper());   // 输出 "HELLO WORLD"
Console.WriteLine(txt.ToLower());   // 输出 "hello world"

C# 字符串连接

字符串连接 + 运算符可用于在字符串之间进行连接。这被称为串联:

示例:

string firstName = "John ";
string lastName = "Doe";
string name = firstName + lastName;
Console.WriteLine(name);

请注意,我们在 "John" 之后添加了一个空格,以在打印时在 firstNamelastName 之间创建一个空格。

您还可以使用 string.Concat() 方法来连接两个字符串:

示例:

string firstName = "John ";
string lastName = "Doe";
string name = string.Concat(firstName, lastName);
Console.WriteLine(name);

添加数字和字符串

警告!

C# 使用 + 运算符同时进行加法和连接。

记住:数字相加,字符串连接。

如果您将两个数字相加,结果将是一个数字:

示例:

int x = 10;
int y = 20;
int z = x + y;  // z 将是 30(整数/数字)

如果您将两个字符串相加,结果将是字符串连接:

示例:

string x = "10";
string y = "20";
string z = x + y;  // z 将是 "1020"(一个字符串)

C# 字符串插值

字符串插值是字符串连接的另一种选择,它将变量的值替换到字符串中的占位符中。请注意,与连接不同,您无需担心空格:

示例:

string firstName = "John";
string lastName = "Doe";
string name = $"My full name is: {firstName} {lastName}";
Console.WriteLine(name);

还请注意,在使用字符串插值方法时,必须使用美元符号($)。

字符串插值是在 C# 版本 6 中引入的。

C# 访问字符串

访问字符串的字符可以通过在方括号[]内引用其索引号来实现。

示例:

string myString = "Hello";
Console.WriteLine(myString[0]);  // 输出 "H"

注意:字符串索引从0开始:[0]是第一个字符,[1]是第二个字符,依此类推。

示例:

string myString = "Hello";
Console.WriteLine(myString[1]);  // 输出 "e"

您还可以使用 IndexOf() 方法找到字符串中特定字符的索引位置:

示例:

string myString = "Hello";
Console.WriteLine(myString.IndexOf("e"));  // 输出 "1"

另一个有用的方法是 Substring(),它从字符串中提取字符,从指定的字符位置/索引开始,并返回一个新的字符串。此方法通常与 IndexOf() 一起使用以获取特定字符的位置:

示例:

// 全名
string name = "John Doe";

// 字母D的位置
int charPos = name.IndexOf("D");

// 获取姓氏
string lastName = name.Substring(charPos);

// 打印结果
Console.WriteLine(lastName);

C# 特殊字符

由于字符串必须在引号内编写,C#将误解此字符串并生成错误:

string txt = "We are the so-called "Vikings" from the north.";

避免此问题的解决方案是使用反斜杠转义字符。

反斜杠(\)转义字符将特殊字符转换为字符串字符:

转义字符 结果 描述
\' ' 单引号
\" " 双引号
\ \ 反斜杠

序列 \" 在字符串中插入双引号:

示例:

string txt = "We are the so-called \"Vikings\" from the north.";

序列 \' 在字符串中插入单引号:

示例:

string txt = "It\'s alright.";

序列 \ 在字符串中插入单个反斜杠:

示例:

string txt = "The character \\ is called backslash.";

C#中的其他有用的转义字符包括:

代码 结果 尝试
\n 换行
\t 制表符
\b 退格

```

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章
|
1月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
1月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
1月前
|
存储 C# 数据库
C# 生成唯一ID,有哪些方法?
【2月更文挑战第12天】
176 0
|
3月前
|
编译器 C# 开发者
C# 11.0中的新特性:覆盖默认接口方法
C# 11.0进一步增强了接口的灵活性,引入了覆盖默认接口方法的能力。这一新特性允许类在实现接口时,不仅可以提供接口中未实现的方法的具体实现,还可以覆盖接口中定义的默认方法实现。本文将详细介绍C# 11.0中接口默认方法覆盖的工作原理、使用场景及其对现有代码的影响,帮助开发者更好地理解和应用这一新功能。
|
3月前
|
C# 开发者
C# 10.0引入常量插值字符串:编译时确定性的新篇章
【1月更文挑战第22天】在C# 10.0中,微软为开发者带来了一项引人注目的新特性——常量插值字符串。这一功能允许在编译时处理和计算字符串插值表达式,从而得到可以在编译时确定的常量字符串。本文将深入探讨C# 10.0中常量插值字符串的概念、工作原理、使用场景及其对现有字符串处理方式的改进,旨在帮助读者更好地理解和应用这一强大的新特性。
|
3月前
|
编译器 C# 开发者
C# 10.0中插值字符串的改进:灵活性与性能的双重提升
【1月更文挑战第19天】C# 10.0带来了对插值字符串的显著改进,进一步增强了这一功能的灵活性和性能。插值字符串是C#中处理字符串格式化的一种强大方式,它允许开发者直接在字符串中嵌入变量和表达式。在C# 10.0中,插值字符串不仅获得了语法上的简化,还通过新的编译时优化提高了运行时性能。本文将详细探讨C# 10.0中插值字符串的改进内容,以及这些改进如何为开发者带来更加高效和便捷的编程体验。
|
1月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
1月前
|
开发框架 .NET C#
C#学习相关系列之Linq常用方法---排序(一)
C#学习相关系列之Linq常用方法---排序(一)
|
1月前
|
开发框架 .NET 编译器
C#学习相关系列之匿名方法和Lambda表达式
C#学习相关系列之匿名方法和Lambda表达式
|
1月前
|
C#
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
37 1

热门文章

最新文章