C#字符串操作,转自韩迎龙博客

2021-07-17 00:21

阅读:724

1.1 字符串大小写
 方法原型 
  string .ToUpper();  //返回字符串转换的大写形式
  string .ToLower();  //返回字符串转换的小写形式
 例如:用户在输入用户名的时候,可能会大小写输入混乱,但是我们可以转换(全部转换为大写或者全部转化为小写)一下,
 使用户也能够登录成功
     Console.Write("请您输入用户名:");
        //全部转换为大写
        string username = Console.ReadLine();
        string usernameupper = username.ToUpper();
        //全部转换为小写
        string usernamelower = username.ToLower();
        Console.WriteLine("大写是:{0},小写是:{1}", usernameupper, usernamelower); 

1.2 移除首尾指定字符
 Trim 移除一组指定字符的首尾匹配项
  方法原型
   (1)string .Trim();      //移除首尾的空格
    string str = " 韩迎龙 ";
    string firstendnullstr = str.Trim();
    Console.WriteLine(firstendnullstr.Length);   输出信息:3
   (2)string .Trim(new char[]{‘‘});   //移除首尾指定的字符(必须是首尾的字符)
    string str = "韩迎龙韩";
    string firstendnullstr = str.Trim(new char[] { ‘韩‘ });
    Console.WriteLine(firstendnullstr);   输出信息:迎龙
 TrimStart 移除一组指定字符的开头匹配项
  方法原型
   (1)string .TrimStart(); //移除开头的空格
    string str = " 韩迎龙 ";
    string firstendnullstr = str.TrimStart();
    Console.WriteLine(firstendnullstr.Length);  输出信息:4
   (2)string .TrimStart(new char[]{‘‘}); //移除开头指定的字符
    string str = "韩迎龙韩";
    string firstendnullstr = str.TrimStart(new char[] { ‘韩‘ });
    Console.WriteLine(firstendnullstr);     输出信息:迎龙韩
 TrimEnd 移除一组指定字符的结尾指定项
  方法原型
   (1)string .TrimEnd();   //移除结尾的空格
    string str = " 韩迎龙 ";
    string firstendnullstr = str.TrimEnd();
    Console.WriteLine(firstendnullstr.Length);  输出信息:4
   (2)string .TrimEnd(new char[]{‘‘});
    string str = "韩迎龙韩";
    string firstendnullstr = str.TrimEnd(new char[] { ‘韩‘ });
    Console.WriteLine(firstendnullstr);     输出信息:韩迎龙

1.3 字符串的比较
 Compare()方法
  方法原型
   (1) int Compare(String,String);   //比较两个字符串对象
    int strCompare=string.Compare("sFsFsF","Sfsfsf"); //输出信息:0
   (2) int Compare(string,String,Boolean)  //比较两个字符串对象,是否忽略大小写
    int  int dou = string.Compare("sdsSD", "sdsSd", true);   //输出信息:0
   (3) int Compare(String,String,StringComparison) //参数指定比较是使用当前区域性还是固定区域性,
    是考虑还是忽略大小写,是使用字排序规则还是序号排序规则。
    int dou = string.Compare("dsdssdD", "dsdssdd", StringComparison.OrdinalIgnoreCase); //输出信息0
  按照字典排序进行比较
   如果strA>StrB,则返回的值大于0
   如果strA=strB,则返回的值等于0
   如果strA CompareOrdinal()方法,通过计算每个字符串中相应Char对象的数值来比较
  方法原型
   (1)int CompareOrdinal(String,String)  //通过计算每个字符串中相应的Char对象的数值来比较两个字符串
    int dou = string.CompareOrdinal("a", "c");  //输出结果是:-2
  也是按照字典排序
   如果strA>StrB,则返回的值大于0
   如果strA=strB,则返回的值等于0
   如果strA CompareTo()方法,将此实例与指定对象或者String进行比较,并且返回二者相对值的指示
  方法原型
   (1) int CompareTo(Object);  //将此实例与object进行比较
    MyClass my = new MyClass();
    string s = "sometext";
    try
    {
     int i = s.CompareTo(my);
    }
    catch (Exception ex)
    {
     Console.WriteLine(ex.Message);
    }
    public class MyClass { }    
    //输出结果是:对象的类型必须是string类型
   (2) int CompareTo(string);  //将此实例与string进行比较
    string str = "a";
    int s = str.CompareTo("c");  //输出结果是-1
  也是按照字典排序
   如果strA>StrB,则返回的值大于0
   如果strA=strB,则返回的值等于0
   如果strA Equals()方法,确定两个String对象是否具有相同的值
  方法原则
   (1)bool Equals(Object); 确定此String实例是否与指定的对象具有相同的值
    StringBuilder sb = new StringBuilder("abcd");
    String str1 = "abcd";
    Console.WriteLine(str1.Equals(sb));
    输出结果:False
   (2)bool Equals(String); 确定此实例是否与另一个指定的String对象具有相同的值
    string str1 = "abcd";
    Console.WriteLine(str1.Equals("abcd"));
    //输出结果是True
   (3)bool Equals(String,String)  确定两个指定的String对象是否具有相同的值
    Console.Write(string.Equals("1234", "1234"));
    //输出结果是True
   (4)bool Equals(String,StringComparison)  确定此字符串是否与指定的 String 对象具有相同的值。
   参数指定区域性、大小写以及比较所用的排序规则。
    string str="HanYingLong";
    Console.WriteLine(str.Equals("hanyinglong", StringComparison.OrdinalIgnoreCase));
    //输出结果是True
   (5)bool Equals(String,String,StringComparison) 确定两个指定的 String 对象是否具有同一值。
   参数指定区域性、大小写以及比较所用的排序规则。
    //Console.WriteLine(string.Equals("AdssdS", "adssds", StringComparison.OrdinalIgnoreCase));
    输出结果True
  返回值是bool类型,所以我们能够判断出来如果结果相等的话就返回True,否则返回False
  注释:如果仅仅比较两个字符串是否相等,还是使用"=="比较简单
   Console.WriteLine("请输入一个字符串");
   string str1 = Console.ReadLine();
   Console.WriteLine("请输入第二个字符串");
   string str2 = Console.ReadLine();
   // 不考虑大小写的比较
   bool isEqual = str1.ToLower() == str2.ToLower();
1.4 字符串的合并和分割
 合并Join方法:在指定 String 数组的每个元素之间串联指定的分隔符 String,从而产生单个串联的字符串。
  方法原型 
   详细介绍:将数组strArr中的内容拼接成一个字符串,并在对应数组的每两项间添加分隔符str
      string.Join(str,strArr);
   (1) string string.Join(String,String[]);
    Console.WriteLine(string.Join("迎", new string[] { "韩", "龙","我" }));
    Console.WriteLine(string.Join("迎", new char[] { ‘韩‘, ‘龙‘, ‘我‘ }));
    //输出结果是:韩迎龙迎我
   (2) string string.Join(String,String[],Int32,Int32)
    String[] val = { "apple", "orange", "grape", "pear" };
    String sep = ",";
    String result = String.Join(sep, val, 1, 2);
    Console.WriteLine(result);
   //输出结果是orange,grape
 分割Split方法:返回的字符串数组包含此实例中的子字符串
  方法原型
   (1)string[] Split(Char[]) //返回的字符串数组包含此实例中的子字符串
    string str = "I Have a Dream";
    string[] divisionstr = str.Split(new char[] { ‘ ‘ });
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //输出结果是:IHaveDream,去掉了空格
   (2)string[] Split(Char[],Int32)  //返回的字符包含此实例中的子字符串,参数指定返回的子字符串的最大数量
    string str = "I Have a Dream";
    string[] divisionstr = str.Split(new char[] { ‘ ‘ }, 2);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //输出结果:IHave a Dream  ,int count将字符串截为几段的意思
   (3)string[] Split(Char[],StringSplitOptions)  //返回的字符串包含此实例中的子字符串,参数指定是否
   返回空数组元素
    string str = " 梅西| 卡 卡|小龙 ";
    string[] divisionstr = str.Split(new char[] { ‘|‘,‘ ‘ }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //输出结果是:梅西卡卡小龙
   (4)string[] Split(String[],StringSplitOptions) //返回的字符串包含此实例中的子字符串,参数指定是否
   返回空数组元素
    string str = "梅西|卡卡|小龙";
    string[] divisionstr = str.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //输出结果是:梅西卡卡小龙
   (5)string[] Split(Char[],Int32,StringSplitOptions) //返回的字符串数组包含此字符串中的子字符串,参数
   指定要返回子字符串的最大数量,以及是否要返回空数组元素。
    string str = "梅西|卡卡|小龙";
    string[] divisionstr = str.Split(new char[] { ‘|‘ }, 2, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //输出结果是:梅西卡卡|小龙
   (6)string[] Split(String[],Int32,StringSplitOptions) //返回的字符串数组包含此字符串中的子字符串,参数
   指定要返回子字符串的最大数量,以及是否要返回空数组元素。
    string str = "梅西|卡卡|小龙";
    string[] divisionstr = str.Split(new string[] { "|" }, 2, StringSplitOptions.RemoveEmptyEntries);
    foreach (string s in divisionstr)
    {
     Console.Write(s);
    }
    //输出结果是:梅西卡卡|小龙
1.5 字符串的查找
 Contains方法:返回一个值,该值指示指定的String对象是否出现在此字符串
  方法原型
   bool .Contains(String value); //表示字符串中是否包含value,如果包含,返回True,否则返回False
    Console.Write("请输入一个字符串:");
    string str = Console.ReadLine();
    if (str.Contains("abc"))
    {
     Console.WriteLine("字符串{0}包含{1}", str, "abc");
    }
    else
    {
     Console.WriteLine("字符串{0}不包含{1}", str, "abc");
    }
 IndexOf方法:String或一个或多个字符在此字符串中的第一个匹配项
  方法原型
   (1)int .IndexOf(String)  指定字符在此字符串中的第一个匹配项的索引
    string str = "让世界变得更美好";
    int res = str.IndexOf("好");
    Console.WriteLine(res);
    //输出结果是:7
   (2)int .IndexOf(String,Int32) 指定字符串中的第一个匹配项的索引,该搜索从指定字符位置开始
    string str = "让世界变得更美好";
    int res = str.IndexOf("世界变得", 0);
    Console.WriteLine(res);
    //输出结果是:1
 LastIndexOf方法:String或一个活多个字符在此字符串中的最后一个一个匹配项
  方法原型
   (1)int .LastIndexOf(String) 指定字符在字符串中的最后一个匹配项的索引
    string str = "让世界好得更美好";
    int res = str.LastIndexOf("好");
    Console.WriteLine(res);
    //输出结果:7
   (2)int .LastIndexOf(String,Int32) 指定字符串中的第一个匹配项的索引,该搜索从指定字符位置开始
    string str = "让世界好得更好美好";
    int res = str.LastIndexOf("得", 4);
    Console.WriteLine(res);
    //输出结果是:4
 IndexOpAny方法 指定字符数组中的任意字符在此实例中第一个匹配项的索引
  方法原型
   (1)int .IndexOpAny(Char[]) 指定字符数组中的任意字符在此实例中第一个匹配项的索引。
    string str = "地球很美好,我们很喜欢";
    int res = str.IndexOfAny(new char[] { ‘s‘, ‘我‘ });
    Console.WriteLine(res);
    //输出结果:0
   (2)int .IndexOpAny(Char[],Int32) 指定字符数组中的任意字符在此实例中第一个匹配项的索引。
   搜索从指定字符位置开始
    string str = "地球很美好,我们很喜欢";
    int res = str.IndexOfAny(new char[] { ‘球‘, ‘我‘, ‘喜‘ }, 0);
    Console.WriteLine(res);
    //输出结果:1
   (3)int .IndexOpAny(Char[],Int32,Int32)指定字符数组中的任意字符在此实例中第一个匹配项的索引。
   搜索从指定字符位置开始,并检查指定数量的字符位置。
    string str = "地球很美好,我们很喜欢";
    int res = str.IndexOfAny(new char[] { ‘球‘, ‘我‘, ‘喜‘ }, 2, 5);
    Console.WriteLine(res);
    //输出结果:6
 LastIndexOpAny方法和LastIndexOf方法的使用基本相同
1.6 求子字符串
 方法原型
  (1)string .SubString(Int32)  检索字符串,子字符串从指定的字符开始
   string str = "我爱中国";
            string res = str.Substring(2);
            Console.WriteLine(res);
   输出结果:中国
  (2)string .SubString(Int32,Int32) 检索字符串,子字符串从指定的字符开始,并且具有指定的长度
   string str = "我爱中国,中华名族万岁";
            string res = str.Substring(2, 5);
            Console.WriteLine(res);
   输出结果:中国,中华
 总结:string .SubString(int startIndex,int length);
 从字符串strName的startIndex位置开始提取长度为length的字符串,如果省略第二个参数则表示一直到最后
1.7 字符串的插入移除和替换
  字符串的插入
   方法原型
    string .Insert(Intzv32 startIndex,string value)在此实例中的指定索引位置插入一个指定的 String 实例。
     string str = "我中国";
     string res = str.Insert(1, "爱");
     Console.WriteLine(res);
     输出结果:我爱中国
   总结:在字符串的startIndex位置上插入value,原来的字符依次后移,变成一个新的字符串
  字符串的移除
   方法原型
    (1)string .Remove(Int32 startIndex) 删除此字符串中从指定位置到最后位置的所有字符
     string str = "我爱中国日本大和民族";
     string res = str.Remove(4);
     Console.WriteLine(res);
     输出结果:我爱中国
    (2)string .Remove(Int32 StartIndex,Int32 Length)  从指定位置开始删除指定数目的字符
     string str = "我爱中国日本&大和民族";
     string res = str.Remove(4, 2);
     Console.WriteLine(res);
     
     输出结果:我爱中国&大和民族
   总结:从字符串中移除StartIndex开始,长度为Length的字符串,剩下的字符按照原来的顺序重新排成
    一个新的字符串,如果省略第二个参数,将移除StartIndex后面的所有的字符串
  字符串的替换
   方法原型
    (1)string .Replace(char oldchar,char newchar)  将字符串中的oldchar替换为newchar
     string str = "我爱中华&美国";
     string res = str.Replace(‘&‘, ‘和‘);
     Console.WriteLine(res);
     输出结果:我爱中华和美国
    (2)string .Replace(string oldvalue,string new value) 将字符串中的oldvalue替换为newvalue
     string str = "我爱中华&美国";
     string res = str.Replace("美国", "天朝");
     Console.WriteLine(res);
     输出结果是:我爱中华&天朝  
1.8 判断开始和结束
 StartsWith开始
  方法原型
   bool .StartsWith(String value) 确定此实例的开头是否与指定的字符串匹配
    string str = "我爱中华";
    bool istrue = str.StartsWith("我哎");
    Console.WriteLine(istrue);
    输出结果是:False
 EndsWidth结束
  方法原型
   bool .EndsWith(string value) 确定此实例的结尾是否与指定的字符串匹配
    string str = "我爱中华";
    bool istrue = str.EndsWith("中国");
    Console.WriteLine(istrue);
    输出结果:False
1.9 字符串的赋值
 Copy方法
  方法原型
   string String.Copy(string str);  创建一个与指定String具有相同值的String的新实例
    string str = "韩迎龙";
    string res = string.Copy(str);
    Console.WriteLine(res);
    输出结果是:韩迎龙
 CopyTo方法
  方法原型
   string .CopyTo(int sourceIndex,char[] destination,int destinationIndex,int count)
   //将指定数目的字符从此实例中的指定位置复制到字符数组中的指定位置
   string dest = "Hello world";
            string source = "Goodbye China";
            char[] destArray = dest.ToCharArray();//将dest变成字符数组
            source.CopyTo(8, destArray, 6, 5);//从source的第8个字符起复制5个字符并从destArray的第6个位置开始放
            dest = new string(destArray);//这时dest为"Hello China"
            Console.WriteLine(dest);
   输出结果是:Hello China

总结:字符串具有不可变性,对字符串的修改,实际上都是重新得到一个字符串,重新赋值

上一篇:Promise API 简介

下一篇:win7安装JDK6


评论


亲,登录后才可以留言!