C#操作字符串

739 查看

整理下操作字符串相关的属性和方法,主要是string和stringbuilder的使用。

字符串中可以包含转义符,如“\n”(新行)和“\t”(制表符)。
如果希望包含反斜杠,则它前面必须还有另一个反斜杠,如“\”。
@ 符号会告知字符串构造函数忽略转义符和分行符。

      string str = "-hello,world-";

一般用Trim来删除指定字符,或者去除空格

        Console.WriteLine(str.Trim('-'));//hello,world
        Console.WriteLine(str.TrimEnd('-'));//-hello,world
        Console.WriteLine(str.TrimStart('-'));//hello,world-

字符串访问,直接用索引即可,得到对应的字符

        Console.WriteLine(str[1]);//输入h

字符串遍历成单字节

        foreach (char myChar in str)
        {
            Console.WriteLine("{0}", myChar);
        }

输出.png

字符串转字节数组ToCharArray

        char[] c = str.ToCharArray();
        for (int i = 0; i < c.Length; i++)
        {
            Console.WriteLine(c[i]);
        }

输出效果和遍历成单字节一样

分割字符串Split

        string[] s = str.Split(',');
        for (int i = 0; i < s.Length; i++)
        {
            Console.WriteLine(s[i]);//s[0]=-hello s[1]=world
        }

多个不同的字符也可分割,例如

        string s1 = "hello-world*hello curry";
        string[] s2 = s1.Split('-', '*', ' ');
        for (int i = 0; i < s2.Length; i++)
        {
            Console.WriteLine(s2[i]);
        }

此时输出为


分割字符串.png


串联字符串

        Console.WriteLine(string.Join("*",new object[]{12,"hello",DateTime.Now}));
        Console.WriteLine(string.Join(" ",12,"hello",36));

替换字符串

        Console.WriteLine(str.Replace('-', '*'));//*hello,world*

获取指定字符对应的索引位置

        Console.WriteLine(str.IndexOf(','));//6
        Console.WriteLine(str.IndexOf('。'));//-1  如果找到该字符,则为 value 的从零开始的索引位置;如果未找到,则为 -1。
        Console.WriteLine(str.LastIndexOf('-'));//12
        Console.WriteLine(str.Contains('-'));//true

截取字符串

        Console.WriteLine(str.Substring(1));//hello,world-,从位置1开始到最后的全部截取出来
        Console.WriteLine(str.Substring(1, 5));//hello,第一个为开始位置,第二个为长度

移除字符串

        Console.WriteLine(str.Remove(1));//输出-,从位置1开始到最后的全部删除
        Console.WriteLine(str.Remove(0, 6));//输出,world-
        //第一个为开始位置,第二个为长度

字符串开头与指定的字符串匹配

        Console.WriteLine(str.StartsWith("hello"));//false
        Console.WriteLine(str.StartsWith("-HELLO", true, null));//true  忽略大小写,使用当前区域

字符串的大小写转换ToLower转小写,ToUpper转大写

        Console.WriteLine(str.ToLower());
        Console.WriteLine(str.ToUpper());//-HELLO,WORLD-

使字符串达到指定长度实现对齐

        Console.WriteLine(str.PadLeft(15,'-'));//在字符左侧填充字符来达到指定的总长度,从而实现右对齐
        Console.WriteLine(str.PadRight(15, '-'));//在字符右侧填充字符来达到指定的总长度,从而实现左对齐

stringbuilder的使用方法

首先new一个新的StringBuilder

        StringBuilder sb = new StringBuilder("Hello World!");

输出长度

        Console.WriteLine(sb.Length);//12

sb.Capacity = 10;
设置最大长度为10
sb.EnsureCapacity(10);
设置要确保的最小容量

        //向StringBuilder增加新元素
        Console.WriteLine(sb.Append("123"));
        StringBuilder sb1 = new StringBuilder("Hello World!");
        Console.WriteLine(sb1.AppendFormat("第一个{0},第二个{1}","Beijing",2008));//注意第一个是从0开始
        //向指定的索引位置插入字符串
        Console.WriteLine(sb.Insert(6,"beautiful "));
        //从指定的索引位置移除指定长度的字符
        Console.WriteLine(sb.Remove(5,10));
        //替换字符
        Console.WriteLine(sb.Replace("!","*"));
        //将StringBuilder转为String类型
        Console.WriteLine(sb.ToString());

输出结果为


stringbuilder.png