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对象的不可变字符串表示形式。

相关推荐
蜡笔小新星7 分钟前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
凯子坚持 c8 分钟前
C语言复习概要(三)
c语言·开发语言
无限大.19 分钟前
c语言200例 067
java·c语言·开发语言
余炜yw21 分钟前
【Java序列化器】Java 中常用序列化器的探索与实践
java·开发语言
篝火悟者22 分钟前
问题-python-运行报错-SyntaxError: Non-UTF-8 code starting with ‘\xd5‘ in file 汉字编码问题
开发语言·python
Death20025 分钟前
Qt 中的 QListWidget、QTreeWidget 和 QTableWidget:简化的数据展示控件
c语言·开发语言·c++·qt·c#
六点半88826 分钟前
【C++】速通涉及 “vector” 的经典OJ编程题
开发语言·c++·算法·青少年编程·推荐算法
惜.己26 分钟前
javaScript基础(8个案例+代码+效果图)
开发语言·前端·javascript·vscode·css3·html5
niu_sama30 分钟前
基于muduo库函数实现protobuf协议的通信
开发语言·qt
不写八个32 分钟前
Qt教程(001):Qt概述与安装
开发语言·qt