C#基础——字符串、字符串API。可变字符串

C#基础------字符串、字符串API。可变字符串

字符串是 System.String 类的实例。字符串表示文本数据,可以包含字母、数字、符号和空格等字符。

创建字符串

csharp 复制代码
string str1 = "Hello, World!"; // 使用双引号创建字符串
string str2 = "This is a C# string.";

字符串拼接

csharp 复制代码
string concatenated = str1 + " " + str2; // 使用 + 运算符连接字符串
string interpolated = $"{str1} {str2}"; // 使用字符串插值方式连接字符串

占位符

csharp 复制代码
int i = 12345;
Console.WriteLine("{0:C}", i); //货币占位符
Console.WriteLine("{0:D}", DateTime.Now); //日期占位符(年/月/日)
Console.WriteLine("{0:y}", DateTime.Now); //日期占位符(年/月)

使用字符数组对字符串进行初始化

csharp 复制代码
char[] charArray = { 't', 'i', 'm', 'e' };
string charStr = new string(charArray);
Console.WriteLine(charStr); //time

字符串长度 Length

csharp 复制代码
string charStr = "time";
// 使用 Length 属性获取字符串的长度
Console.WriteLine(charStr.Length); //4
// 使用索引获取指定位数的字符(可以把字符串当作是一个 "数组")
Console.WriteLine(charStr[3]); //m

字符串API

csharp 复制代码
// IndexOf 获取指定字符在字符串中的位置(索引)
Console.WriteLine(charStr.IndexOf('e'));//3
// 第二个参数代表要查找字符开始的位置(有多个的相同字符的时候使用第二个参数)
Console.WriteLine(charStr.IndexOf('e', 4)); //-1
// LastIndexOf 从后往前查
Console.WriteLine(charStr.IndexOf('e')); //3
// 判断字符串首位内容
string str2 = "梦想还是要有的,万一实现了呢!";
// StartsWith 判断以xxx开头,返回一个布尔值
Console.WriteLine(str2.StartsWith("梦想")); //true
Console.WriteLine(str2.StartsWith("叽里呱啦")); //false
// EndsWith 判断以xxx结尾
Console.WriteLine(str2.EndsWith("!")); //true
Console.WriteLine(str2.EndsWith("叽里呱啦")); //false
// Contains 是否包含某一部分
Console.WriteLine(str2.Contains("梦想")); //true
Console.WriteLine(str2.Contains("叽里呱啦")); //true

IsNullOrEmpty 判断是不是空字符

csharp 复制代码
// 判断是不是空字符串 null
string str3 = ""; //这个不是空字符串,是占内存的,属于内容是空的
str3 = null; //这个是空字符串,压根没有内存
// IsNullOrEmpty 判断指定字符是不是空的,返回布尔值
Console.WriteLine(string.IsNullOrEmpty("--" + str3)); //false

//字符串中代表空的方式有多种
string c1 = "";  //有内存,无内容
string c2 = null; //无内存
string c3 = string.Empty; //等价于 c1
// 值类型有默认值所以不能直接为null
// int number = null; //报错!

Equals 比较两个字符串的值是否相等,返回一个布尔值

csharp 复制代码
string a = "hello", b = "world";
Console.WriteLine(a.Equals(b)); //false
Console.WriteLine(a == b); //false

ToUpper ToLower 大小写转换

csharp 复制代码
string str4 = "Learn And Live";
// 大小写转换
Console.WriteLine(str4.ToUpper()); //转为大写
Console.WriteLine(str4.ToLower()); //转为小写

Substring 截取字符串

第一个参数是:开始的索引(包含)

第二个参数是:截取字符串的位数

csharp 复制代码
string str4 = "Learn And Live";
Console.WriteLine(str4.Substring(1, 3));

Split 分割字符串

第一个参数代表分隔符(需要一个char类型的数组)

第二个参数代表分割的结果以 xx 形式呈现

StringSplitOptions.RemoveEmptyEntries 除空字符串(如果不写第二个参数,默认是None)

csharp 复制代码
string str5 = "关注博主,,一起打好C#基础,学好编程语言,做一个不脱发的程序猿";
char[] separator = { ',' }; // 声明分割的字符串数组
string[] splitStr = str5.Split(separator, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in splitStr) {
  Console.WriteLine(item);
}

去除空格

csharp 复制代码
string str6 = "   123   456   ";
// Trim 去除字符串前后空格
Console.WriteLine("<<<" + str6.Trim() + ">>>"); // "123   456"
// TrimStart 去除字符串开头空格
Console.WriteLine("<<<" + str6.TrimStart() + ">>>"); // "123   456   "
// TrimEnd 去除字符串结尾空格
Console.WriteLine("<<<" + str6.TrimEnd() + ">>>"); // "   123   456"

Replace 替换字符串

第一个参数是需要替换的字符,第二个参数是要替换成为的字符

csharp 复制代码
string a2 = "5", b2 = "10";
Console.WriteLine(a2.Replace(a2, b2)); //10

可变字符串

频繁使用字符串进行拼接的时候意味着要产生多个连续不断的内容,这样会降低程序的效率,解决方案是使用可变字符串。

可变字符串可以使用StringBuilder类来实现。这个类允许我们对字符串进行动态操作,而不必每次更改字符串时都重新创建一个新的字符串对象。

csharp 复制代码
StringBuilder ss = new StringBuilder();

Append 添加字符串到StringBuilder对象,通过往同一块内存中追加避免产生多余的垃圾内存。

csharp 复制代码
ss.Append("a");
ss.Append("b");
ss.Append("c");
Console.WriteLine(ss); //abc

Insert 在指定的位置插入

第一个参数是要插入的位置(索引),

第二个参数是插入的内容

第三个参数是要插入多少次

csharp 复制代码
 ss.Insert(0, "xxx", 3);
 Console.WriteLine(ss); //xxxxxxxxxabc

Replace 替换字符串

第一个参数是要替换的内容

第二个参数是要替换后的内容

csharp 复制代码
ss.Replace("x", "a");
Console.WriteLine(ss);//aaaaaaaaaabc

Remove 删除字符串

第一个参数起始索引

第二个参数是删除的个数

csharp 复制代码
ss.Remove(0, 9);
Console.WriteLine(ss); //abc

ToString 可变字符换也可以直接转成不可变字符串

csharp 复制代码
 Console.WriteLine(ss.ToString()); //abc

对于不可变字符串,Length只能读,不能改

csharp 复制代码
ss.ToString().Length = 7; //报错

对于可变字符串,Length属性读写都可以

csharp 复制代码
ss.Length = 7;

注意:由于StringBuilder对象是可变的,所以我们可以在任何时候添加、插入、替换或删除字符串。一旦完成操作,我们可以使用ToString()方法获取StringBuilder对象的不可变字符串表示形式。

相关推荐
前端 贾公子3 分钟前
第10章:RAG(2)
开发语言·python
爱学堂IT分享26 分钟前
图灵Java互联网架构师六期
java·开发语言
传奇开心果编程37 分钟前
【Rust入门知识点学与练】第3课:String 与 &str 的区别
开发语言·学习·rust
秋名RG1 小时前
Java 核心特性一览
java·开发语言
平头哥AI1 小时前
Day 01 | go run 跑通第一个 Go 程序,go build 留下一个能拷走的 exe
开发语言·后端·golang
葡萄城技术团队2 小时前
工业数据可视化:使用活字格 AIcoding + Three.js 构建轻量化三维设备监控大屏
开发语言·javascript·信息可视化
qiaosaifei2 小时前
JAVA老项目中有大量的类名_编译时报找不到符号错误
java·开发语言
聪明蛋子哟2 小时前
MCP协议深度落地:如何用Python/Java双语言实现统一的工具调用网关?
java·开发语言·python
一晌小贪欢2 小时前
python-第27天:Python面向对象详解
开发语言·python·数据可视化·面向对象·python办公
迪康Defender3 小时前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全