• 字符串使用秘籍


    字符串的使用(常用方法)

    1、字符串的定义
     语法:
      string <name>;
      <name> = <value>;
      或
      string <name> = <value>;

     字符串是引用类型,在定义
      string <name>;
     的时候在栈空间中,定义了一个<name>的空间,该空间存放一个地址
     当写到
      <name> = "The C# Programming Language";
     的时候,会在堆内存分配一个空间,存放字符串"The C# Programming Language",并将首地址赋值给<name>
     因此<name>指向定义的字符串
     
    2、字符串的声明
     字符串string对应MSIL(CTS)中的String,实际上是一个类
     那么以前了解到,类需要使用new <构造方法>()来进行实例化,同样字符串也行(这里只介绍一种)
      string <name> = new string(new char[] {...});
     注:这里String与string得到的效果一样
     
     这里有个应用
      字符串是不可变的,在内存中字符串一旦生成,将不会改变
      即使之前使用的str1 + str2也只是生成了另一个字符串
      那么要修改字符串,怎么处理呢?
       这里有个方法
        <strName>.ToCharArray();
       该方法会将字符串,变成一个char类型的数组,因此需要用一个char类型的数组接收

      例:修改一个字符串里面的内容
       char[] ch = <strName>.ToCharArray();
       // 处理字符数组,完成修改目的
       <strName> = new string(ch);

    3、字符串可以用索引访问
     字符串,原本就是排在一起的字符,C#提供了用“下标”(索引)来访问字符串中的字符
     例如:
      string str = "jiangkun";
      这里内存中将“j”分配编号0,“i”分配编号1,然后依次增加...
      因此,如果需要访问k,数一数,编号是5,所以可以这么来
       char temp = str[5];
      那么得到的就是字符“k”
     
     字符串也有一个Length属性,可以得到字符串的长度


    4、常见的字符串方法

    4.1 字符串大小写(字符)
      string <strName>.ToUpper();
      string <strName>.ToLower();
     例:在等待用户输入的时候,常常不考虑用户输入的用户名大小(或一个程序中规定使用的大小写)
      可以将用户的输入全部转换成小写、或大写再来进行比较
      如:
      Console.WriteLine("请输入用户名");
      string uid = Console.ReadLine().ToLower();
      // 再将uid与系统中的数据进行比较

    4.2 移除首尾指定字符
      方法原型
       string <strName>.Trim();  // 移除首尾的空格
       string <strName>.TrimStart(); // 移除开头的空格
       string <strName>.TrimEnd();  // 移除结尾的空格
      如果要指定移除的内容,可添加一个char数组作为参数
       string <strName>.Trim(char[] ch);
     
     例:在用户输入的时候,一般不考虑输入两边的空格,而使用Trim()方法

    4.3 字符串的比较(重点)
     Compare()方法
      方法原型
       int string.Compare(string str1,string str2);
      按照字典排序比较
       当str1 > str2时,返回1
       当str1 = str2时,返回0
       当str1 < str2时,返回-1
      
      注:int string.Compare(string str1,string str2,bool ignoreCase)表示是否区分大小写
       这里true表示不区分大小写,默认为false
     
     Equals()方法
      方法原型
       bool <strName>.Equals(string str);
      比较如果相等返回true,否则返回false
      
      注:bool <strName>.Equals(string str, StringComparison.OrdinalIgnoreCase)表示不区分大小写
     
     注:如果仅仅比较两个字符串是否相等,还是使用“==”比较简单
     例如:
      Console.WriteLine("请输入一个字符串");
      string str1 = Console.ReadLine();
      Console.WriteLine("请输入第二个字符串");
      string str2 = Console.ReadLine();
      // 不考虑大小写的比较
      bool isEqual = str1.ToLower() == str2.ToLower();

    4.4 字符串的合并与分割
     合并Join方法
      将数组strArr中的内容拼接成一个字符串,并在对应数组的每两项间添加分隔符str
       string.Join(str,strArr);
      方法原型
       string string.Join(string str,string[] strArr);
     
     字符串分割Split方法
      方法原型:
       string[] <strName>.Split(params char[] separator);
      将字符串<strName>以separator数组中的字符分割,分割后得到的内容存到一个数组中
      
      例:
       // 分析这句话,提取这句话的单词
       string str = "Hello, How are you?";
       string[] words = str.Split(' ',',','?');
      
      注:返回的数组中可以有空字符串项,如果要去掉这些空字符串项,可以使用
       string[] <strName>.Split(char[] separator,StringSplitOptions.RemoveEmptyEntries);

      因此例子可改为
       string str = "Hello, How are you?";
       string[] words = str.Split(new char[]{' ',',','?'},StringSplitOptions.RemoveEmptyEntries);

    4.5 字符串查找
      Contains方法
       方法原型:
        bool <strName>.Contains(string str);
       表示字符串<strName>中是否包含str,如果包含,返回true,否则返回false
      例:
       Console.WriteLine("随便输入一串字母");
       string str = Console.ReadLine();
       if(str.Contains("abc"))
       {
        Console.WriteLine("字符串{0}中包含{1}",str,"abc");
       }
       else
       {
        Console.WriteLine("字符串{0}中不包含{1}",str,"abc");
       }
      IndexOf方法
       常用的两种形式:
        int <strName>.IndexOf(string str);     // 从头开始,出现第一次的下标
        int <strName>.IndexOf(string str,int startIndex); // 从startIndex开始,出现第一次的下标
       如果没有找到则返回-1
      例:
       string str = "C#语言基础,讲师蒋坤";
       int res1 = str.IndexOf("蒋坤");
       int res2 = str.IndexOf("蒋 坤");
       Console.WriteLine(res1 + "\n" + res2);
       
       注:LastIndexOf方法从最后一个开始匹配
      
      IndexOpAny方法
       方法原型:
        int <strName>.IndexOfAny(char[] anyOf);
       寻找字符数中的所有内容,返回第一个的位置
       
       同样有两个参数的重载
        int <strName>.IndexOfAny(char[] anyOf, int startIndex);

    4.6 求子字符串(多)
      方法原型
       string <strName>.Substring(int startIndex, int length);
      从字符串<strName>的startIndex位置开始提取长度为length的字符串,如果省略第二个参数表示一直到最后

    4.7 字符串的插入、移除和替换
     4.7.1 插入
      在字符串<strName>的index位置上插入str,原来的字符依次后移,变成一个新的字符串
       <strName> = <strName>.Insert(index,str);
      方法原型为:
       string <strName>.Insert(int index, string str);
     
     4.7.2 移除
      在字符串<strName>中移除从startIndex开始,长度为length的字符串,剩下的字符按原序合并为一个新的字符串
       <strName> = <strName>.Remove(startIndex,length);
      方法原型为:
       string <strName>.Remove(int startIndex, int length);
      
      注:如果省略第二个参数,将移除startIndex后的所有字符串

     4.7.3 替换
      将字符串<strName>中的oldChar替换为newChar
       <strName> = <strName>.Replace(oldChar,newChar);
      方法原型:
       string <strName>.Replace(char oldChar, char newChar);
      同样,这个替换的字符也可以是字符串
       string <strName>.Replace(string oldValue, string newValue);

    4.8 判断结束与开始
      判断字符<strName>串是否以某字符串开始或结束
       bool <strName>.StartsWith(string str);
       bool <strName>.EndsWith(string str);


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

    字符串处理练习

    课上练习1:接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。"abc"→"cba"
    课上练习2:接收用户输入的一句英文,将其中的单词以反序输出。"hello c sharp"→"sharp c hello"
    课上练习3:从Email中提取出用户名和域名:abc@163.com
    课上练习4:文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开,每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10,如果超过10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。
    让用户输入一句话,找出所有e的位置

  • 相关阅读:
    zoj 3279 线段树 OR 树状数组
    fzu 1962 树状数组 OR 线段树
    hdu 5057 块状链表
    hdu3487 Play with Chain
    bzoj 1588营业额统计(HNOI 2002)
    poj2823 Sliding Window
    poj2828 Buy Tickets
    poj2395 Out of Hay
    poj3667 Hotel
    poj1703 Lost Cows
  • 原文地址:https://www.cnblogs.com/wangguowen27/p/2571608.html
Copyright © 2020-2023  润新知