• 黑马程序员_字符串常用处理方法


    一、“改变”字符串

    字符串的不可变性,在内存中,字符串一旦生成,将不会改变。如果一定要更改字符串中的某个字符,可以使用string.ToCharArray()方法将字符串复制一份,变成一个字符数组,这样就可以更改了。 

    1             string str = "I have a dream!!!";
    2             char[] charStr=str.ToCharArray();
    3             charStr[0]='Y';
    4             str = new string(charStr);
    5             Console.WriteLine(str);
    6             Console.ReadKey(true);

    输出结果:
    Y have a dream!!!

    二、分割与合并;截取、插入、替换与移除;

    1.分割:将一个字符串用指定的一个或多个字符分割,可以用string[] <strName>.Split(params char[] separator),但是,如果字符串中连续出现多个分隔符,得到的数组中会含有空字符串;这时,我们可以用带有StringSplitOptions options参数的string.Split(char[] separator,StringSplitOptions options),options中的RemoveEmptyEntires为移除结果数组中的空字符串。

    string[] <strName>.Split(params char[] separator)和string Split(char[] separator,StringSplitOptions options)中的分隔符可以为字符串。

    1             string str = "吃葡萄不吐葡葡萄皮,不吃葡萄倒吐葡萄葡萄皮。";
    2             string[] str1 = str.Split(new char[] { '' });
    3             string[] str2 = str.Split(new char[] { '', '' }, StringSplitOptions.RemoveEmptyEntries);
    4             string[] str3 = str.Split(new string[] { "葡萄" },StringSplitOptions.None);
    5             string[] str4 = str.Split(new string[] { "葡萄", "" }, StringSplitOptions.RemoveEmptyEntries);
    6             Console.ReadKey(true);

    输出结果:

    str1与str3因为没有启用StringSplitOptions.RemoveEmptyEntries选项,分隔后的数组中含有空字符串。

    2.合并:利用string.Join();

    1             string str = "I have a dream!!!";
    2             string[] str1 = str.Split(new char[] { ' ' });  //这里的分隔符' ',没有连续出现,可以不用StringSplitOptions.RemoveEmptyEntries选项。
    3             str = string.Join(" ", str1);
    4             Console.WriteLine(str);
    5             Console.ReadKey(true);

    输出结果:

    I have a dream!!! 

    3.截取:利用string.Substring(); 

    1             string str = "I have a dream!!!";
    2             string str1 = str.Substring(0,6);
    3             string str2 = str.Substring(7);
    4             Console.WriteLine("{0}
    {1}
    ",str1,str2);
    5             Console.ReadKey(true);

    输出结果:

    I have

    a Dream!!!

    4.插入:利用string.Insert(); 

    1             string str = "I have a dream!!!";
    2             str = str.Insert(14, ",a song to sing");
    3             Console.WriteLine(str);
    4             Console.ReadKey(true);

    输出结果:

    I have a dream,a song to sing!!!

    5.替换:利用string.Replace(); 

    1             string str = "I have a dream!!!";
    2             str = str.Replace("I", "We");       //Replace()中的字符串,也可以换成字符。
    3             Console.WriteLine(str);
    4             Console.ReadKey(true);

    输出结果:

    We have a dream!!!

    6.移除:利用string.Remove();

    1             string str = "I have a dream!!!";
    2             string str1 = str.Remove(14);
    3             string str2 = str.Remove(14, 2);
    4             Console.WriteLine("{0}
    {1}",str1,str2);
    5             Console.ReadKey(true);

    输出结果:
    I have a dream

    I have a dream!

    三、检测

    1.利用string.Contains();检测是否包含指定字符串。

     1             string str = "I have a dream!!!";
     2             string str1 = "have";                               //str1也可以为字符。
     3             if (str.Contains(str1))
     4             {
     5                 Console.WriteLine("{0}中包含{1}", str, str1);
     6             }
     7             else
     8             {
     9                 Console.WriteLine("{0}中不包含{1}", str, str1);
    10             }
    11             Console.ReadKey(true);

    输出结果:

    I have a dream!!!中包含have

    2.利用string.IndexOf()与string.LastIndexOf()及string.IndexOfAny()与string.LastIndexOfAny()检测指定字符在字符串中的出现位置。 

     1             //            01234567890123456789
     2             string str = "I have a dream!!!";
     3 
     4             int num = str.IndexOf('e');
     5             Console.WriteLine(num);
     6 
     7             int numL = str.LastIndexOf('e');                                        //从后往前找
     8             Console.WriteLine(numL);
     9                                                                                     //用IndexOfAny()可以匹配字符或字符串数组中的所有字符或字符串,而IndexOf只能匹配一个字符或字符串
    10             int numAny = -1;                                                        //numAny初始化
    11             while (true)
    12             {
    13                 numAny = str.IndexOfAny(new char[] { 'e', 'a' }, numAny + 1);       //每找到一处,numAny已经自增了。
    14                 if (numAny == -1)                                                   //当找不到匹配字符的时候,numAny==-1,跳出循环。
    15                 {
    16                     break;
    17                 }
    18                 Console.Write(numAny + " ");
    19             }
    20             Console.WriteLine();
    21 
    22             int numLAny = str.Length;
    23             while (true)
    24             {
    25                 numLAny = str.LastIndexOfAny(new char[] { 'e', 'a' }, numLAny - 1); //这里是从后往前找,所以每找到一处,numLAny已经自减了。
    26                 if (numLAny == -1)
    27                 {
    28                     break;
    29                 }
    30                 Console.Write(numLAny + " ");
    31             }
    32             Console.ReadKey(true);

     输出结果:

    5

    11

    3 5 7 11 12

    12 11 7 5 3

    3.利用string.StartsWith()与string.EndsWith()检测是否以指定字符串开头或结尾。

     1             string str = "I have a dream!!!";
     2             string start = "I have ";
     3             string end = "m!!!";
     4             if (str.StartsWith(start) && str.EndsWith(end))                             //StartsWith()与EndsWith()均有三个重载!
     5             {
     6                 Console.WriteLine("{0}是以{1}开头,并且以{2}结尾。", str, start, end);
     7             }
     8             else
     9             {
    10                 Console.WriteLine("匹配有误!");
    11             }
    12             Console.ReadKey(true);

    输出结果:

    I have a dream!!!是以I have 开头,并且以m!!!结尾。

    4.利用string.Trim()、string.TrimStart()、string.TrimEnd()检测字符串前后是否有指定字符并处理,默认为空格。

     1             string str = "   I have a dream!!!   ";
     2             Console.WriteLine(str.TrimStart());
     3             Console.WriteLine(str.TrimEnd());
     4             Console.WriteLine(str.Trim());
     5 
     6             string str1 = "I have a dream!!!";
     7             Console.WriteLine(str1.TrimStart('I',' ','h'));
     8             Console.WriteLine(str1.TrimEnd('a','m','!'));
     9             Console.WriteLine(str1.Trim('I', '!'));
    10             Console.ReadKey(true);

    输出结果:

    I have a dream!!!

       I have a dream!!!

    I have a dream!!!

    ave a dream!!!

    I have a dre

     have a dream

    四、比较

    1.利用string.Equals()比较两个字符串是否具有相同的值,返回类型为bool值。

    1             string str = "I have a dream!!!";
    2             string str1 = "i have a dream!!!";
    3             Console.WriteLine(str.Equals(str1, StringComparison.OrdinalIgnoreCase).ToString());     //第二个参数为忽略大小写。
    4             Console.WriteLine(str.Equals(str1).ToString());                                         //一般情况下没有==来的直接。
    5             Console.ReadKey(true);

    输出结果:

    True

    False

    2.利用string.Compare()用字典排序法比较两个字符串的大小。

    1             string str1 = "1.天黑黑";
    2             string str2 = "2.天黑黑";
    3             string str3 = "10.天黑黑";
    4             Console.WriteLine(string.Compare(str1, str2, true));          //-1    这里用的是字典比较法,str1>str2,值为1,str1=str2,值为0,str1<str2,值为-1
    5             Console.WriteLine(string.Compare(str2, str3, true));          //1     2>1,所以结果是1    最后一个参数true为忽略大小写,false为不忽略。
    6             Console.WriteLine(string.Compare(str3, str1, true));          //1     0的ascii码为48,大于.的ascii码46,所以结果为1
    7             Console.ReadKey(true);

    输出结果:

    -1

    1

    1

  • 相关阅读:
    Python 面向对象(类与对象)
    修改Centos文 7件夹所在组及权限(不同用户共用一个文件夹)
    CGPoint,CGSize,CGRect
    关于投资币圈的思考和微信群问答干货整理
    数字货币合约交易基础知识
    比特币成长大事记
    健康医疗笔记(四)癌症知识
    ​阿德勒心理学《被讨厌的勇气》一切烦恼皆源于人际关系
    免费学术论文网站Sci-Hub
    数字货币交易所开发笔记3-撮合引擎开发
  • 原文地址:https://www.cnblogs.com/dlwcg/p/3561884.html
Copyright © 2020-2023  润新知