• 字符串使用秘籍


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

    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的位置

  • 相关阅读:
    openssh的服务端配置文件
    SSH的端口转发
    ssh服务
    文件引入
    数据类型的转换
    作用域
    静态变量
    函数
    php嵌入html的解析过程
    PHP执行过程
  • 原文地址:https://www.cnblogs.com/wangguowen27/p/2571608.html
Copyright © 2020-2023  润新知