String与StringBuilder
C#支持两种字符串:规则字符串和逐字字符串。
我先前看到@+“”这种结构处理字符串的时候,也就只是记下怎么用而已,其实这就是标准的逐字字符串,而且分隔符之间的字符逐字解释,唯一例外的就是引号。在逐字字符串中字符串不处理简单转义序列及十六进制和Unicode转义序列,而且可以跨多行。例如:
static void Main(string[] args)
{
string s = "这个专业\"老师\"太垃圾了!";
string s1 = @"这个专业""老师""太垃圾了!";
Console.WriteLine("s-{0}",s1);
Console.WriteLine("s1-{0}",s1);
string s2 = @"这个专业
老师
太垃圾了!";
Console.WriteLine("s2-{0}",s2);
Console.ReadKey();
String和StringBuilder的不同之处,可以概括为StringBuilder是可变字符序列的类似String类,String我们都知道它是新值新引用,必须分配新的内存。这样当我们多次更改或者连接许多字符串的时候可以使用StringBuilder可以提高性能,先分别演示一下String和StringBuilder的一些有代表性的方法和属性的用法:
using System;
namespace tString
{
class test
{
static void Main()
{
//连接字符串演示
string s1 = "Today is ";
string s2 = "Tuesday!";
string s = s1 + s2;
Console.WriteLine(s);
Console.WriteLine("等效于: string.Concat(s1,s2) s={0}", string.Concat(s1, s2));
//逐字访问字符串演示
Console.WriteLine("逐字访问字符串演示\n法1:");
foreach (char c in s) //法1
{
Console.Write(c + " ");
}
Console.WriteLine("\n法2");
char[] str = s.ToCharArray();//将s中的字符复制到unicode字符数组中
foreach (char r in str)
{
Console.Write(r + " ");
}
Console.WriteLine("\n法3");
for (int i = 0; i < s.Length; i++)//索引起始为0,二不是Unicode字符的位置
{
Console.Write(s[i]+" ");
}
s = s1 + s2;
//测试字符的搜索方法
Console.WriteLine("测试字符的搜索方法");
Console.WriteLine("与\"Today\"匹配的第一个字符的索引为{0}", s.IndexOf("Today"));
string target = "ido";//这里注意一下,我也是做实验才发现的,逐字符与target对比
char[] anyOf = target.ToCharArray();
int start =0;
int at;
at = s.IndexOfAny(anyOf, start);
if (at > -1)
Console.WriteLine("s中与\"id\"中匹配的第一个字符的索引为{0}",at);
else
Console.WriteLine("(not found)");
char[] n = { 'i','s'};
//例如:
char[] ar = { 'i','s'};
Console.WriteLine("s中与\"is\"中匹配的第一个字符的索引为{0}", s.IndexOfAny(ar));
Console.WriteLine("索引0-5对应的子字符串为{0}", s.Substring(0, 5));
//修改字符串
Console.WriteLine("修改字符串测试");
//Insert
Console.WriteLine("Insert测试");
Console.WriteLine(s.Insert(17, " What a nice weather!"));
//PadLeft
Console.WriteLine("PadLeft测试");
s = s.PadLeft(s.Length + 8, '♀');
Console.WriteLine(s);
//PadRight
Console.WriteLine("PadRight测试");
s = s.PadRight(s.Length + 8, '♂');
Console.WriteLine(s);
Console.ReadKey();
}
}
}
效果图:由于要限电了只能演示String类了,可以自己研究下StrigBuilder类,和String差不多,几个典型的方法如Append,AppendFormat,ToString.

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?