C#String和StringBuilder的用法

来源:互联网 发布:c语言判断时间间隔 编辑:程序博客网 时间:2024/06/01 10:36

C#String和StringBuilder的用法

String类有不可改变性。每次执行字符操作时,都会创建一个新的String对象。
StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题。初始化一个StringBuilder 之后,它会自动申请一个默认的StringBuilder 容量(默认值是16),这个容量是由Capacity来控制的.并且允许,我们根据需要来控制Capacity的大小,也可以通过Length来获取或设置StringBuilder 的长度.

当需要对字符串频繁操作时优先使用StringBuilder,stringBuilder会更高效。

下面是string的常用方法:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 练习测试{    class Program    {        static void Main(string[] args)        {            //1.索引访问字符            string s = "abcd";            Console.WriteLine(s[3]);            Console.WriteLine("--------------------------------------------------------------");            //2.打散为字符 string.ToCharArray()            string s1 = "abcd";            char[] c1 = s1.ToCharArray();            for (int i = 0; i < c1.Length; i++)            {                Console.WriteLine(c1[i]);            }            Console.WriteLine("--------------------------------------------------------------");            //3截取字符串 string.Substring            string s2 = "abcd";            Console.WriteLine(s2.Substring(3));   //截取索引3后面所有的字符            Console.WriteLine(s2.Substring(1,3));//截取索引1开始截取三个字符            Console.WriteLine("--------------------------------------------------------------");            //4匹配索引  string.IndexOf()     string.Lastindexof()            string s3 = "abcabcdabc";            Console.WriteLine(s.IndexOf("a")); // 从字符串头部开始搜索第一个匹配字符A的位置索引,输出"0"            Console.WriteLine(s.IndexOf("bcd")); // 从字符串头部开始搜索第一个匹配字符串BCD的位置,输出"4"            Console.WriteLine(s.LastIndexOf('c')); // 从字符串尾部开始搜索第一个匹配字符C的位置,输出"5"            Console.WriteLine(s.LastIndexOf("ab")); // 从字符串尾部开始搜索第一个匹配字符串BCD的位置,输出"3"            Console.WriteLine(s.IndexOf("E")); // 从字符串头部开始搜索第一个匹配字符串E的位置,没有匹配输出"-1";            Console.WriteLine("--------------------------------------------------------------");            //5.判断是否包含字符串  string.Contains()            string s4 = "abcd";            Console.WriteLine(s4.Contains("bc"));            Console.WriteLine("--------------------------------------------------------------");            //6.大小写转换string.ToUper()   string.ToLower()            string s5 = "abcd";            Console.WriteLine(s5.ToUpper());   //转为大写            Console.WriteLine(s5.ToLower());   //专为小写            Console.WriteLine("--------------------------------------------------------------");            //7.截头去尾       string.Trim()            string s6 = "__AB__CD__";            Console.WriteLine(s6.Trim('_')); // 移除字符串中头部和尾部的'_'字符,输出"AB__CD"            Console.WriteLine(s6.TrimStart('_')); // 移除字符串中头部的'_'字符,输出"AB__CD__"            Console.WriteLine(s6.TrimEnd('_')); // 移除字符串中尾部的'_'字符,输出"__AB__CD"            //8插入和删除(Insert和Remove)            Console.WriteLine("--------------------------------------------------------------");            string  s7 = "ADEF";            Console.WriteLine(s7.Insert(1, "BC")); // 在字符串的第2位处插入字符串"BC",输出"ABCDEF"            Console.WriteLine(s7);            Console.WriteLine(s7.Remove(1)); // 从字符串的第2位开始到最后的字符都删除,输出"A"            Console.WriteLine(s7);            Console.WriteLine(s7.Remove(0, 2)); // 从字符串的第1位开始删除2个字符,输出"EF"            Console.WriteLine();            Console.WriteLine("--------------------------------------------------------------");            //9替换字符(串)(Replace)            string s8 = "A_B_C_D";            Console.WriteLine(s8.Replace('_', '-')); // 把字符串中的'_'字符替换为'-',输出"A-B-C-D"            Console.WriteLine(s8.Replace("_", "")); // 把字符串中的"_"替换为空字符串,输出"A B C D"            Console.WriteLine();            Console.WriteLine("--------------------------------------------------------------");            //10分割为字符串数组(Split)            string s9 = "ab,cd,ef,gg";            string[] arr = s9.Split(',');            Console.WriteLine(arr[2]);            Console.WriteLine("--------------------------------------------------------------");            //(11)格式化(静态方法Format)            Console.WriteLine(string.Format("{0} + {1} = {2}", 1, 2, 1 + 2));            Console.WriteLine(string.Format("{0} / {1} = {2:0.000}", 1, 3, 1.00 / 3.00));            Console.WriteLine(string.Format("{0:yyyy年MM月dd日}", DateTime.Now));            Console.WriteLine("--------------------------------------------------------------");            //12.Equals 比较两个字符串是否相等        string str1="asd";        string str2="ert";        bool  b = str1.Equals(str2);  //b=false;            Console.WriteLine(b);            //13.IsNullOrEmpty判断字符是否为null或者为空,返回值为bool;            string str11 = "hahha";            bool b1 = string.IsNullOrEmpty(str11);//b1=false;            string str22 = "";            bool b2 = string.IsNullOrEmpty(str22);//b2=true;            Console.ReadKey();        }    }}

下面是stringBuilder的常用方法:
(1)Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。以下示例将一个 StringBuilder 对象初始化为“Hello World”,然后将一些文本追加到该对象的结尾处。将根据需要自动分配空间。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Append(” What a beautiful day.”);
Console.WriteLine(MyStringBuilder);
此示例将 Hello World! What a beautiful day. 显示到控制台。

(2)AppendFormat 方法将文本添加到 StringBuilder 的结尾处,而且实现了 IFormattable 接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到 StringBuilder 的后面。以下示例使用 AppendFormat 方法将一个设置为货币值格式的整数值放置到 StringBuilder 的结尾。
int MyInt = 25;
StringBuilder MyStringBuilder = new StringBuilder(“Your total is “);
MyStringBuilder.AppendFormat(“{0:C} “, MyInt);
Console.WriteLine(MyStringBuilder);
此示例将 Your total is $25.00 显示到控制台。

(3)Insert 方法将字符串或对象添加到当前 StringBuilder 中的指定位置。以下示例使用此方法将一个单词插入到 StringBuilder 的第六个位置。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Insert(6,”Beautiful “);
Console.WriteLine(MyStringBuilder);
此示例将 Hello Beautiful World! 显示到控制台。

(4)可以使用 Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用 Remove 方法缩短 StringBuilder。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
此示例将 Hello 显示到控制台。

(5)使用 Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。以下示例使用 Replace 方法来搜索 StringBuilder 对象,查找所有的感叹号字符 (!),并用问号字符 (?) 来替换它们。
StringBuilder MyStringBuilder = new StringBuilder(“Hello World!”);
MyStringBuilder.Replace(‘!’, ‘?’);
Console.WriteLine(MyStringBuilder);

阅读全文
1 0
原创粉丝点击