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

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

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

创建字符串

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

字符串拼接

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

占位符

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

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

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

字符串长度 Length

string charStr = "time";
// 使用 Length 属性获取字符串的长度
Console.WriteLine(charStr.Length); //4
// 使用索引获取指定位数的字符(可以把字符串当作是一个 "数组",索引也是从0开始的)
Console.WriteLine(charStr[3]); //e

字符串API

// 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 判断是不是空字符

// 判断是不是空字符串 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 比较两个字符串的值是否相等,返回一个布尔值

string a = "hello", b = "world";
Console.WriteLine(a.Equals(b)); //false
Console.WriteLine(a == b); //false

ToUpper ToLower 大小写转换

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

Substring 截取字符串

第一个参数是:开始的索引(包含)
第二个参数是:截取字符串的位数

string str4 = "Learn And Live";
Console.WriteLine(str4.Substring(1, 3));

Split 分割字符串

第一个参数代表分隔符(需要一个char类型的数组)
第二个参数代表分割的结果以 xx 形式呈现
StringSplitOptions.RemoveEmptyEntries 除空字符串(如果不写第二个参数,默认是None)

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

去除空格

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 替换字符串

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

string a2 = "5", b2 = "10";
Console.WriteLine(a2.Replace(a2, b2)); //10

可变字符串

频繁使用字符串进行拼接的时候意味着要产生多个连续不断的内容,这样会降低程序的效率,解决方案是使用可变字符串。
可变字符串可以使用StringBuilder类来实现。这个类允许我们对字符串进行动态操作,而不必每次更改字符串时都重新创建一个新的字符串对象。

StringBuilder ss = new StringBuilder();

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

ss.Append("a");
ss.Append("b");
ss.Append("c");
Console.WriteLine(ss); //abc

Insert 在指定的位置插入

第一个参数是要插入的位置(索引),
第二个参数是插入的内容
第三个参数是要插入多少次

 ss.Insert(0, "xxx", 3);
 Console.WriteLine(ss); //xxxxxxxxxabc

Replace 替换字符串

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

ss.Replace("x", "a");
Console.WriteLine(ss);//aaaaaaaaaabc

Remove 删除字符串

第一个参数起始索引
第二个参数是删除的个数

ss.Remove(0, 9);
Console.WriteLine(ss); //abc

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

 Console.WriteLine(ss.ToString()); //abc

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

ss.ToString().Length = 7; //报错

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

ss.Length = 7;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值