(原创)c#学习笔记05--变量的更多内容03--字符串的处理

5.3  字符串的处理

  下面用几页的篇幅介绍C#中比较常用的字符串处理技巧。

  首先要注意,string 类型变量可以看作是 char 变量只读数组。这样,就可以使用下面的语法访问每个字符:

      string myString = "A string"; 
      char myChar = myString[1];

  但是, 不能用这种方式为各个字符赋值。为了获得一个可写的char数组,可以使用下面的代码,其中使用了数组变量的ToCharArray()命令:

      string myString = "A string"; 
      char[] myChars = myString.ToCharArray();

  接着就可以采用标准方式处理char数组了。也可以在foreach循环中使用字符串,例如:

      foreach (char character in myString) 
      { 
          Console.WriteLine("{0}", character); 
      } 

  与数组一样,还可以使用myString.Length获取元素的个数,这将给出字符串中字符数,例如:

      string myString = Console.ReadLine(); 
      Console.WriteLine("You typed {0} characters.", myString.Length); 

  两个简单但很有效的命令是<string>.ToLower()和<string>.ToUpper()。它们可以分别把字符串转换为大写或小写形式。要明白为什么它们非常有用,可以考虑下面的情形:要检查用户的某个响应,例如字符串yes。如果可以把用户输入的字符串转换为小写形式,就也能检查字符串YES、Yes、yeS等。

  注意,这个命令与本节的其他命令一样,并没有真正改变应用它的字符串。把这个命令与字符合并使用,就会创建一个新的字符串,以便与另一个字符串进行比较(如上所述),或者赋给另一变量。该变量可能与当前操作的变量相同,例如:

userResponse = userResponse.ToLower(); 

  这是一个要点,因为只写出下面的代码是没用的:

 userResponse.ToLower();

  如果用户无意间在输入内容的前面或后面添加了额外的空格,会怎样?此时,上述代码就不起作用了。这就需要删除输入字符串中的空格,此时可以使用<string>.Trim()命令来处理。

    string userResponse = Console.ReadLine(); 
      userResponse = userResponse.Trim(); 
      if (userResponse.ToLower() == "yes") 
      { 
          // Act on response. 
      } 

  使用该命令,还可以检测如下的字符串:

      " YES" 
      "Yes "

  也可以使用这些命令删除其他字符,只要在一个char数组中指定这些字符即可,例如:

      char[] trimChars = {' ', 'e', 's'}; 
      string userResponse = Console.ReadLine(); 
      userResponse = userResponse.ToLower(); 
      userResponse = userResponse.Trim(trimChars); 
      if (userResponse == "y") 
      { 
          // Act on response. 
      }

  这将从字符串的前面或后面删除所有空格、字母 e 和 s。如果字符串中没有其他字符,就会检测以下字符串:

      "Yeeeees" 
      " y"

  还可以使用<string>.TrimStart()和<string>.TrimEnd()命令。它们可以把字符串的前面或后面的空格删掉。这些命令也需要指定char数组。

  还有另外两个字符串命令可以处理字符串的空格:<string>.PadLeft()和<string>.PadRight()。它们可以在字符串的左边或右边添加空格,使字符串达到指定的长度。其语法如下:

<string>.PadX(<desiredLength>); 

  例如:

      myString = "Aligned"; 
      myString = myString.PadLeft(10);

  这将在myString中把3个空格添加到单词Aligned的左边。这些方法可以用于在列中对齐字符串,特别适用于放置包含数字的字符串

  与修整命令一样,还可以按照第二种方式使用这些命令,即提供要添加到字符串上的字符,这需要一个char,而不是像修整命令那样指定一个char数组。例如:

      myString = "Aligned"; 
      myString = myString.PadLeft(10, '-');

  这将在myString的开头加上3个短横线。

  还有许多这样的字符串处理命令,其中一些只用于非常特殊的情况,在后面的章节中遇到它们时进行讨论。

  看个示例,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ch05Ex05
{
    class Program
    {
        static void Main(string[] args)
        {
            string myString = "This is a string";
            char[] separator = { ' ' };
            string[] myWords;
            myWords = myString.Split(separator);
            foreach (string word in myWords)
            {
                Console.WriteLine("{0}", word);
            }
            Console.ReadKey();
        }
    }
}

  运行结果如下:

  使用命令<string>.Split()把 string 转换为 string 数组,把它在指定的位置分隔开。这些位置采用 char数组的形式,在本例中该数组只有一个元素,即空格字符:

char[] separator = {' '}; 

  下面的代码把字符串在每个空格处分解开时,会得到其子字符串,即得到包含单个单词的数组:

      string[] myWords; 
      myWords = myString.Split(separator);

  note: 得到的每个单词没有空格,单词的内部和两端都没有空格。在使用 Split()时,删除了分隔符。

  

原文地址:https://www.cnblogs.com/wodehao0808/p/4911242.html