C#复习(九)string字符串


一、string
  • C#中单个字符用单引号包含就是char类型,('a'),单引号中放且只能放一个字符,不能为''。
  • 单个字符也可以表示为字符串,还可以有长度为0的字符串""。
  • 使用字符串中的Length属性来获得字符串中的字符个数。
  • string可以看做是char的只读数组。char c = s[1];。例子:遍历输出string中的每个元素(正反序)。
  • C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。可以理解为常量。
  • 如果要对char进行修改,那么就必须创建一个新的字符串,用ToCharArray()方法得到字符串的char数组,对数组进行修改。
            string str = "  abcdefg  ";
            char[] c = str.ToCharArray();
            c[2] = '.';
            Console.WriteLine("ToCharArray得到字符数组,遍历字符数组:");
            for (int m = 0; m < c.Length; m++)
            {
                Console.WriteLine(c[m]);
            }
            Console.WriteLine("原始字符串");
            Console.WriteLine(str);
    结果为:
     C#复习(九)string字符串

  • 注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。   
    1.ToLower():得到字符串的小写形式。
            string str = "  ABcdefg  "; 
            Console.WriteLine("将字符全小写:" + str.ToLower());
    结果为:
     C#复习(九)string字符串
   2.ToUpper():得到字符串的大写形式;
            string str = "  ABcdefg  "; 
            string UPPER = str.ToUpper();
            Console.WriteLine("将字符全大写:" + UPPER);
            Console.WriteLine("原始字符串:" + str);
    结果为:
     C#复习(九)string字符串
   3.Trim()去掉字符串两端的空隔。
            string str = "  ABcdefg  "; 
            Console.WriteLine("去掉两端空格:" + str.Trim());
    结果为:
    去掉两端空格:ABcdefg
   4.s1.Equals(s2, StringComparison.OrdinalIgnoreCase),两个字符串进行不区分大小写的比较。
            string str = "  ABcdefg  "; 
            string str2 = "  abcdefg  ";
            bool isEqual=  str.Equals(str2, StringComparison.OrdinalIgnoreCase);
            Console.WriteLine(isEqual);
    结果为:true
   5.Split(params char[] separator):将字符串按照指定的字符分割为字符串数组;   
     Split(char[] separator,StringSplitOptions options):将字符串按照指定的char分割符分割为字符
     串数组(options 取RemoveEmptyEntries的时候移除结果中的空白字符串);
            string s = "aa,bb,cc,,, d,e";
            char[] a= { ','};
            string[] ss = s.Split(a, StringSplitOptions.RemoveEmptyEntries);
            foreach (var item in ss)
            {
                Console.WriteLine(item);
            }
    结果为:
     C#复习(九)string字符串
    Split(string[] separator, StringSplitOptions options):将字符串按照指定的string分割符分割为
     字符串数组。
    6.字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的
     地方替换为newValue。例子:名字替换。
            string str = "ABcdefg";
            Console.WriteLine(str.Replace('A', 'a'));    //aBcdefg
            Console.WriteLine(str.Replace("AB", "ab"));    //abcdefg
   7.取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串
     string Substring(int startIndex, int length):取从位置startIndex开始长度为length的子字符
     串,如果子字符串的长度不足length则报错。
            string str = "ABcdefg";
            Console.WriteLine(str.Substring(4));  //efg
            Console.WriteLine(str.Substring(4,2)); //ef 第二个参数不能超出范围,否则会报异常
    8.str.CompareTo(str2):将此实例与指定的 String 对象进行比较,并指示此实例在排序顺序中是位
     于指定的字符串之前、之后还是与其出现在同一位置。0<1<2<..
            string str = "  ABcdefg  "; 
            string str2 = "  abcdefg  ";         
            int num=  str.CompareTo(str2);//str>str2:1;相等0,小于为-1    
            Console.WriteLine(num);
    结果为:1
   9.bool Contains(string value)判断字符串中是否含有子串value
            string str = "ABcdefg";
            string s = "AB";
            Console.WriteLine(str.Contains(s));
    结果为:true
   10.bool StartsWith(string value)判断字符串是否以子串value开始;
            string str = "ABcdefg";
            string s = "AB";
            Console.WriteLine(str.StartsWith(s));
    结果为:true
   11.bool EndsWith (string value)判断字符串是否以子串value结束;
    12.int IndexOf(string value) 取子串value第一次出现的位置。
            string str = "ABcdefg";
            string s = "AB";
            Console.WriteLine(str.IndexOf(s));
    结果为:0
   13.IsNullOrEmpty(string) 字符串判断为空或长度为0 的字符串(null和””)//String中的静态变量
            string str = "ABcdefg";
            Console.WriteLine(string.IsNullOrEmpty(s));
    结果为:false
二、StringBuilder
  • StringBuilder类为我们提供了很多对字符串进行修改的方法,方便我们对同一个字符串对象进行操作。
  • 每次使用String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的  String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。
  • 构造函数:
    StringBuilder(String),使用指定的字符串初始化 StringBuilder 类的新实例。
    StringBuilder(String, Int32), 用指定的字符串和容量初始化 StringBuilder 类的新实例。
  • 属性:
    Capacity    获取或设置可包含在当前实例所分配的内存中的最大字符数。
    Length       获取或设置当前 StringBuilder 对象的长度。
  • 方法:
   Append(String) 将指定字符串追加到当前   StringBuilder   的结尾。
   Insert(Int32, String) 将字符串或对象插入到当前   StringBuilder  对象的指定索引处。
   Remove(Int32, Int32) 从当前StringBuilder 中移除指定数量的字符,参数为:(位置,长度)
    Replace(String, String)  将当前字符串中出现的所有指定字符串的替换为其他指定字符串

            StringBuilder sb = new StringBuilder("abcdefg");
            Console.WriteLine(sb.Capacity);
            Console.WriteLine(sb.Length);
            sb.Append("+ABCDEFG");
            Console.WriteLine("追加:"+sb);
            sb.Remove(5, 5);
            Console.WriteLine("删除:"+sb);
            sb.Insert(5, "...");
            Console.WriteLine("插入:"+sb);
            sb.Replace("abc", "***");
            Console.WriteLine("修改:"+sb);
            Console.WriteLine(sb.MaxCapacity);
    结果为:
     16
     7
     追加:abcdefg+ABCDEFG
     删除:abcdeCDEFG
     插入:abcde...CDEFG
     修改:***de...CDEFG
     2147483647

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烫青菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值