字符串操作
关于一些字符串操作常用方法
字符串截取
string temp = "大家好, 我叫张三。";
//索引从0开始截取索引5后面的所有字符串(包括5)
Console.WriteLine(temp.Substring(5));
//索引从0开始,截取索引5后面4个字符串(包括5)
Console.WriteLine(temp.Substring(5, 4));
Console.ReadKey();
输出结果
注意:字符串中的空格也会占用一个字节
字符串插入
string temp = "大家好, 我叫张三。";
//插入字符串,从索引从0开始的第4位插入字符串
Console.WriteLine(temp.Insert(4, "他叫李四,"));
Console.ReadKey();
输出结果:
字符串移除
string temp = "大家好, 我叫张三。";
//移除指定字符串,从索引起始为0的第4位开始移除1个字节。
Console.WriteLine(temp.Remove(4,1));//移除了空格
Console.ReadKey();
输出结果
字符串替换
string temp = "大家好, 我叫张三。";
//字符串替换:将字符串中的所有张三全部替换为李四
Console.WriteLine(temp.Replace("张三", "李四"));
Console.ReadKey();
输出结果:
字符串拆分
//拆分方式1
string temp = "ip:192.168.250.1,port:8000,这个部分不会进行分割";
char[] chars ={','};
// 然后根据 ',' 分割 IP 地址,并获取前两部分
string[] newtemp = temp.Split(chars,2);
//拆分方式2
//如果改成下面这句代码就会全部进行分割
// string[] newtemp = temp.Split(chars);
foreach (string text in newtemp)
{
Console.WriteLine("{0}", text);
}
Console.ReadKey();
输出结果:
拆分方式1:
拆分方式2:
字符串查找
string temp = "192.168.250.1:8000:9000";
//字符串查找,返回第一次出现“:”字符串的索引。
Console.WriteLine("第一次出现“:”的索引是:"+temp.IndexOf(":"));
//字符串查找,返回最后一次出现“:”字符串的索引。
Console.WriteLine("最后一次出现“:”的索引是:" + temp.LastIndexOf(":"));
//可搭配Substring方法使用,达到准确截取需要的字符串的目的。
Console.WriteLine(temp.Substring(temp.IndexOf(":")+1,4));
Console.WriteLine(temp.Substring(temp.LastIndexOf(":")+1,4));
Console.ReadKey();
输出结果:
字符串大小写转换
string temp = "Hello,World";
Console.WriteLine(temp.ToLower());//全部转小写
Console.WriteLine(temp.ToUpper());//全部转大写
//字符判断,判断字符串中的索引从零开始的第三位是否为大写的,返回值为布尔
Console.WriteLine(Char.IsUpper(temp, 3));
Console.ReadKey();
输出结果:
空格删除
string temp = " 大家好, 我叫张三。 a";
//去空格:Trim删除字符串前后的空格,
//TrimStart:删除字符串前的。TrimEnd:删除掉字符串后的空格
Console.WriteLine(temp.Trim());
//也可以指定字符(仅限char类型,string不行)
Console.WriteLine(temp.Trim('a'));
Console.ReadKey();
输出结果:
StringBuilder类的基本使用
字符串追加
StringBuilder sb = new StringBuilder("Hello,World!");
//字符串追加
sb.Append("我是字符串追加");
Console.WriteLine(sb.ToString());
Console.ReadKey();
输出结果:
字符串替换
StringBuilder sb = new StringBuilder("Hello,World!");
//字符串替换
sb.Replace("!", "???");
Console.WriteLine(sb.ToString());
Console.ReadKey();
输出结果:
字符串插入
StringBuilder sb = new StringBuilder("哈喽,树哥!");
//字符串插入,索引位置加插入内容
sb.Insert(2, "啊");
Console.WriteLine(sb.ToString());
Console.ReadKey();
输出结果:
字符串移除
StringBuilder sb = new StringBuilder("Hello,World!");
//字符串移除,5是索引,7是要删除的字节数
sb.Remove(5, 7);
Console.WriteLine(sb.ToString());
Console.ReadKey();
输出结果:
String与StringBuilder的区别
String 类型在 .NET 中是不可变的(immutable)。这意味着一旦一个字符串被创建,它的内容就不能被改变。每次你对字符串进行修改(如添加、删除、替换字符等),实际上都会在内存中创建一个全新的字符串对象,然后将修改后的内容复制到这个新对象中。这个过程涉及到分配新的内存和复制大量的字符,特别是当字符串很长或者修改操作很频繁时,这会导致显著的性能开销。
与 String 不同,StringBuilder 是可变的(mutable)。它内部维护了一个字符数组,当你对 StringBuilder 对象进行修改时(如添加、删除字符),它通常只是更新这个内部数组的内容,而不需要创建一个新的字符串对象。这减少了内存的分配和复制操作,从而提高了性能。
示例:
string temp = "";
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 100000; i++)//耗时操作
{
temp += i.ToString();
}
sw.Stop();
Console.WriteLine("temp所用时间:" + sw.Elapsed);
StringBuilder sb = new StringBuilder();
sw.Restart();
for (int i = 0;i<100000;i++)//耗时操作
{
sb.Append(i);
}
sw.Stop();
Console.WriteLine("sb所用时间:" + sw.Elapsed);
Console.ReadKey();
输出结果:
标签:常用,Console,string,temp,StringBuilder,WriteLine,字符串,操作 From: https://www.cnblogs.com/fanrenni/p/18409469