企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
书写的时候需注意:[ ] 不要忘记写。{ } 不要忘记写。 # 1. 初始化 1. 直接赋值 `string str = "你好";` 2. 或用构造函数: public string {char[] value} 例如: ``` char[] arr = {'t', 'i', 'm', 'e'}; string a = new string(arr); ``` 3. 提取 > 返回值为字符串类型string public string(char[] value, int offset, int count) offset表示起始位置,count表示获取个数。 ``` char[] arr = {'时', '间', '就', '是', '金', '钱'}; string a = new string (arr, 4, 2); // new不能省,string也不能省。 ``` 结果为“金钱”两字。 ![](https://ws4.sinaimg.cn/large/006tKfTcly1fral3sy46xj30ic06i0te.jpg) ![](https://ws4.sinaimg.cn/large/006tKfTcly1fral4v8v1vj301x022q2s.jpg) 获取指定位置的字符: ``` string str = "we are the world"; char chr = str[5]; //这里用的是单个字符的类型char ``` 4. 查找子字符串的索引位置 > 返回值为int 类型。获取索引,获取的是第几个位置,所以结果一定是int型。 ``` public int IndexOf(string value) //获取第一次出现的索引 public int IndexOf(stirng value, int startindex); //从指定位置往后查 public int IndexOf(string value, int startindex, int count) //从指定位置往后检查几个字符 ``` > 上述方法是从前往后,如果要从后往前,则使用LastIndexOf ``` string str = "we are the world"; int index = str.indexOf("e"); ``` ``` string str = "we are the world"; int index = str.IndexOf("e", 3); ``` ``` string str = "we are the world"; int index = str.IndexOf("e", 3, 5); // ``` **如果不存在该数字,则返回的位置值为-1。** # 2. 判断字符串结尾-后缀名 > 返回值为bool值,true false。 1. 一般语法 ``` string str = "Program.cs"; bool b = str.EndsWith(".cs"); console.writeline(b); ``` 会输出true,则表示是以这个后缀结尾,如果不是,则返回false。 2. 如果不想区分大小写: public bool EndsWith(string value, bool ignoreCase, CultureInfo culture) endswith后面可以跟三个参数,第一个参数就是value值,第二个参数就是是否忽略大小写(true 为忽略,false为不忽略),第三个参数一般null就行: ``` string str = "Program.cs"; bool b2 = str.EndsWith(".cs", true, null); ``` ![](https://ws4.sinaimg.cn/large/006tNc79gy1frcuw3pvr6j30gs08maaq.jpg) # 3. 判断字符串开头 StartWith # 4. 字符串拼接 符号:+, += ``` static void Main() { Console.WriteLine("please enter your name"); string str = Console.ReadLine(); Console.WriteLine(str + ", hello"); Console.ReadLine(); } ``` ![](https://ws2.sinaimg.cn/large/006tNc79gy1frcv1909qzj30g30823z5.jpg) 直接用+= ![](https://ws2.sinaimg.cn/large/006tNc79gy1frcv3epg6bj30cw06g3yu.jpg) # 5. 比较 1. 用== 符号 如,要比较登录时输入的用户名string name 与数据库中存在的用户名dbname, 可直接判断 name == dbname 是否成立。 2. compare方法——返回int值 > 需要static,因为是直接调用string 下面的compare方法 ``` string m1 = "mj"; string m2 = "mjk"; console.writeline(string.compare(m1, m2)); //此处直接写string.compare,直接调用string字符串这个类 下面的compare 方法。 ``` 如果返回为0,则表示m1==m2,如果返回1,则表示m1>m2,返回-1则表示m1<m2。 `console.writeline(string.compare(m1, m2, true));` 则忽略大小写。 3. compareTo方法——返回int值 > 不需要static,因为compareTo为对象比较。 `console.writeline(m1.CompareTo(m2)); //直接用对象名后面加点就可以调用方法` 4. ✨Equals方法——返回bool值,一般开发中较常用 `public bool Equals (string value);` ![](https://ws4.sinaimg.cn/large/006tKfTcgy1frdlv8x0g6j30bq060gm0.jpg) `public static bool Equals (string a, string b);` ![](https://ws3.sinaimg.cn/large/006tKfTcgy1frdlwjlxzaj30bi066q3c.jpg) # 6. 大小写——用于网页输入验证码 ``` public string TpUpper(); public string ToLower(); ``` ``` string str = "Good good study, day day Up."; string sUp = str.ToUpper(); string sLo = str.ToLower(); ``` ![](https://ws1.sinaimg.cn/large/006tKfTcgy1frdm3ypgc1j30c506qdgd.jpg) # 7. 格式化 如数值、日期、货币、百分比之类。用 `static string.Format` 方法。 可以使用占位符。 ![](https://box.kancloud.cn/53f3692702e5d3459367574631d5755f_613x276.png) ## 数值格式显示 ``` console.writeline(string.Format("金额显示: {0:c}", 368)); //注意冒号的位置,0表示占位符,占位符后面接的才是格式化的类型。 ``` 占位符{0}后面要冒号,然后再写入要格式化的代码,比如 c金额格式 ![](https://box.kancloud.cn/c25d918318bb7e773c115e0bdbee50f3_471x151.png) ![](https://box.kancloud.cn/9a6d18ed6b285d9d2a6f84da87aaab7e_143x80.png) c表示保留两位小数,{0:c0}则表示整数。 ![](https://ws4.sinaimg.cn/large/006tKfTcly1frdmj87e9bj30gy080my4.jpg) ``` console.writeline(string.Format("pi的值: {0:F2}", Math.PI)); //输出pi 的值 ``` ![](https://box.kancloud.cn/c3cf00d2740c67d78095efef582ddf81_705x205.png) ## 日期格式显示 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1frgl8hez5zj30mv0aj0ue.jpg) > 注意:记得写string.Format() ! > 记得占位符后面是冒号: ## 用 toString 的方法 ``` DateTime day1 = DateTime.Now; console.writeline(day1.toString("Y")); ``` 也是可以的。 # 8、截取字符串 string.substring 比如截取文件名,或截取后缀 ``` string fileName = "Program.cs"; string s1 = fileName.Substring(0, fileName.indexOf("."));//0的意思是从第0号位置开始截取,一直到出现“.”的时候结束。 console.writeline(s1); ``` 如果要从"."开始,则可以这么写: ``` string fileName = "Program.cs"; string s2 = fileName.Substring(fileName.indexOf(".")); console.writeline(s2); console.readline(); ``` ![](https://ws1.sinaimg.cn/large/006tKfTcgy1frgsnvjneij30dx04hweu.jpg) # 9、分割字符串 例如excel里面的分列。用split方法。 > 返回结果是字符数组。 ``` string str = "abc, def, ghi"; string[] a1 = str.split(new char[ ] {'.'}); //意思是,用字符'.'来进行分割。如果有其他符号,也可以继续在 char 里面写。 ``` ![](https://ws3.sinaimg.cn/large/006tKfTcgy1frgtnptvpaj30c500tgll.jpg) 例如: ``` console.writeline("please enter your num:"); string str = console.readline(); //让用户自行输入一个带符号“.”的数据 string [] a1 = strName.split(new char []{'.'}); //通过'.'这个字符,来对用户输入的数进行分割。注意这里用的是char ,所以要单引号。 foreach(string a in a1) { console.write(a + " ");//a 只是我们随意定义的一个变量名,用来表示字符串数组内的值。用foreach方法遍历数组,再输出 } console.readline(); ``` 输入192.168.0.2 得出的结果就是 192 168 0 1 中间有空格。 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1frgtdt06ubj30d907i0tg.jpg) **指定分割次数:** ``` string str = "abc, def, ghi"; string a2 = str.splite(new char[ ] {"."}, 2); //会变成下图右边的形式。 ``` ![](https://ws1.sinaimg.cn/large/006tKfTcgy1frgsz8g946j30i009it9i.jpg) ## 此处可以制造死循环,让用户不断输入 只要在代码的最前面加上下面for语句,即可实现。 ``` for (; ;) { } ``` [本书中关于死循环的笔记](https://www.kancloud.cn/amy326/c/627058) ![](https://ws1.sinaimg.cn/large/006tKfTcgy1frgtr0jrbsj30ee0b1q40.jpg) ## 删除空格 `string.Trim()` ``` string str = " abc "; console.writeline(str.Trim()); ``` 或删除指定字符 ``` string str = "777777abc@@@"; char[] ch = {'7', '@'}; console.writeline(str.Trim(ch)); ``` # 10、字符串替换 Replace。替换单个字符用的是单引号。替换多个字符用的是双引号。 ## 替换单个字符 ``` string str = "77777abc7777"; string rp = str.Replace('7', '8'); console.writeline(rp); ``` 输出:88888abc888 ## 替换多个字符 ``` string str = "77777abc777"; string rp2 = str.Replace("ab", "de"); console.writeline(rp2); ``` # 11、可变字符串 `stringBuilder` [具体语法](https://docs.microsoft.com/zh-cn/dotnet/api/system.text.stringbuilder.-ctor?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DZH-CN%26k%3Dk(System.Text.StringBuilder.%2523ctor)%3Bk(TargetFrameworkMoniker-.NETFramework%2CVersion%3Dv4.6.1)%3Bk(DevLang-csharp)%26rd%3Dtrue&view=netframework-4.7.2#System_Text_StringBuilder__ctor_System_String_) 注意,这个方法是在system.text命名空间里面的,所以我们在调用的时候,需要把这个命名空间加到最前面。 ![](https://ws1.sinaimg.cn/large/006tKfTcgy1frhnqbfcu4j30d902qwem.jpg) `string.Builder` 一般情况下,如果定义了一个 str 变量,再操作时,str 的值会变成最新的,无法回到最初。例如: ``` string str = "abc"; str += 'd'; // => 得到str = abcd str += 123; // => 得到 str = abcd123 ``` 但有时候我们希望对 str 进行的操作是能回到最初状态来再一次操作。这时候需要用到可变字符串。 相关方法有:append; appendFormat; Insert; Remove; Replace等。 ![](https://box.kancloud.cn/7aab17a1d009d3be9419087af29eb325_714x207.png) ![](https://box.kancloud.cn/c986a3a89e397dba4b0e0cdd773ab029_694x233.png) 如果用了stringbuilder,就不能像上述一样str += "def"了。而是要用相关的方法来定义。 ``` stringBuilder str = new stringBuilder ("hello"); console.writeline(str.Append(" amy")); console.readline(); ``` [参考](https://blog.csdn.net/qq541005640/article/details/77062849) ![](https://ws1.sinaimg.cn/large/006tKfTcly1frho7em2nqj30gj07faam.jpg)