C# - 字符串


在 C# 中,您可以使用字符串作为字符数组,但是,更常见的做法是使用string关键字来声明字符串变量。string 关键字是System.String类的别名。

创建字符串对象

您可以使用以下方法之一创建字符串对象 -

  • 通过将字符串文字分配给字符串变量

  • 通过使用 String 类构造函数

  • 通过使用字符串连接运算符 (+)

  • 通过检索属性或调用返回字符串的方法

  • 通过调用格式化方法将值或对象转换为其字符串表示形式

以下示例演示了这一点 -

using System;

namespace StringApplication {

   class Program {
   
      static void Main(string[] args) {
         //from string literal and string concatenation
         string fname, lname;
         fname = "Rowan";
         lname = "Atkinson";
			
         char []letters= { 'H', 'e', 'l', 'l','o' };
         string [] sarray={ "Hello", "From", "Tutorials", "Point" };
         
         string fullname = fname + lname;
         Console.WriteLine("Full Name: {0}", fullname);
         
         //by using string constructor { 'H', 'e', 'l', 'l','o' };
         string greetings = new string(letters);
         Console.WriteLine("Greetings: {0}", greetings);
         
         //methods returning string { "Hello", "From", "Tutorials", "Point" };
         string message = String.Join(" ", sarray);
         Console.WriteLine("Message: {0}", message);
         
         //formatting method to convert a value
         DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
         string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
         Console.WriteLine("Message: {0}", chat);
      }
   }
}

当上面的代码被编译并执行时,它会产生以下结果 -

Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 5:58 PM on Wednesday, October 10, 2012

String 类的属性

String 类具有以下两个属性 -

先生。 属性及描述
1

字符

获取当前String对象中指定位置的Char对象。

2

长度

获取当前 String 对象中的字符数。

String 类的方法

String 类有许多方法可以帮助您处理字符串对象。下表提供了一些最常用的方法 -

先生。 方法与说明
1

公共静态 int 比较(字符串 strA,字符串 strB)

比较两个指定的字符串对象并返回一个整数,该整数指示它们在排序顺序中的相对位置。

2

公共静态 int 比较(字符串 strA,字符串 strB,布尔忽略大小写)

比较两个指定的字符串对象并返回一个整数,该整数指示它们在排序顺序中的相对位置。但是,如果布尔参数为 true,则它会忽略大小写。

3

公共静态字符串Concat(字符串str0,字符串str1)

连接两个字符串对象。

4

公共静态字符串Concat(字符串str0,字符串str1,字符串str2)

连接三个字符串对象。

5

公共静态字符串Concat(字符串str0,字符串str1,字符串str2,字符串str3)

连接四个字符串对象。

6

公共布尔包含(字符串值)

返回一个值,指示指定的 String 对象是否出现在此字符串中。

7

公共静态字符串复制(字符串str)

创建一个与指定字符串具有相同值的新 String 对象。

8

公共无效CopyTo(int源索引,char[]目的地,int目的地索引,int计数)

将指定数量的字符从 String 对象的指定位置复制到 Unicode 字符数组中的指定位置。

9

公共 bool EndsWith(字符串值)

确定字符串对象的结尾是否与指定字符串匹配。

10

公共布尔等于(字符串值)

确定当前 String 对象和指定 String 对象是否具有相同的值。

11

公共静态布尔等于(字符串a,字符串b)

确定两个指定的 String 对象是否具有相同的值。

12

公共静态字符串格式(字符串格式,对象arg0)

将指定字符串中的一个或多个格式项替换为指定对象的字符串表示形式。

13

公共 int IndexOf(字符值)

返回当前字符串中指定 Unicode 字符第一次出现的从零开始的索引。

14

公共 int IndexOf(字符串值)

返回此实例中指定字符串第一次出现的从零开始的索引。

15

公共int IndexOf(字符值,int startIndex)

返回此字符串中指定 Unicode 字符第一次出现的从零开始的索引,从指定字符位置开始搜索。

16

公共int IndexOf(字符串值,int startIndex)

返回此实例中指定字符串第一次出现的从零开始的索引,从指定字符位置开始搜索。

17 号

公共 int IndexOfAny(char[] anyOf)

返回指定 Unicode 字符数组中任何字符在此实例中第一次出现的从零开始的索引。

18

公共 int IndexOfAny(char[] anyOf, int startIndex)

返回指定 Unicode 字符数组中任何字符在此实例中第一次出现的从零开始的索引,从指定字符位置开始搜索。

19

公共字符串插入(int startIndex,字符串值)

返回一个新字符串,其中指定字符串插入到当前字符串对象中的指定索引位置。

20

公共静态布尔IsNullOrEmpty(字符串值)

指示指定的字符串是否为 null 或空字符串。

21

公共静态字符串连接(字符串分隔符,参数字符串[]值)

使用每个元素之间的指定分隔符连接字符串数组的所有元素。

22

公共静态字符串Join(字符串分隔符,字符串[]值,int startIndex,int count)

使用每个元素之间的指定分隔符连接字符串数组的指定元素。

23

公共 int LastIndexOf(字符值)

返回当前字符串对象中指定 Unicode 字符最后一次出现的从零开始的索引位置。

24

公共 int LastIndexOf(字符串值)

返回当前字符串对象中指定字符串最后一次出现的从零开始的索引位置。

25

公共字符串删除(int startIndex)

删除当前实例中从指定位置开始一直到最后一个位置的所有字符,并返回字符串。

26

公共字符串删除(int startIndex,int count)

删除当前字符串中从指定位置开始的指定数量的字符并返回该字符串。

27

公共字符串替换(char oldChar,char newChar)

将当前字符串对象中所有出现的指定 Unicode 字符替换为指定的 Unicode 字符,并返回新字符串。

28

公共字符串替换(字符串旧值,字符串新值)

将当前字符串对象中所有出现的指定字符串替换为指定字符串并返回新字符串。

29

公共字符串[]分割(参数char[]分隔符)

返回一个字符串数组,其中包含当前字符串对象中的子字符串,由指定 Unicode 字符数组的元素分隔。

30

公共字符串[]分割(字符[]分隔符,整数计数)

返回一个字符串数组,其中包含当前字符串对象中的子字符串,由指定 Unicode 字符数组的元素分隔。int 参数指定要返回的子字符串的最大数量。

31

公共 bool StartsWith(字符串值)

确定此字符串实例的开头是否与指定字符串匹配。

32

公共 char[] ToCharArray()

返回包含当前字符串对象中所有字符的 Unicode 字符数组。

33

公共 char[] ToCharArray(int startIndex, int length)

返回一个 Unicode 字符数组,其中包含当前字符串对象中的所有字符,从指定索引开始到指定长度。

34

公共字符串 ToLower()

返回此字符串转换为小写的副本。

35

公共字符串 ToUpper()

返回此字符串转换为大写的副本。

36

公共字符串修剪()

从当前 String 对象中删除所有前导和尾随空白字符。

您可以访问 MSDN 库以获取方法和 String 类构造函数的完整列表。

例子

以下示例演示了上面提到的一些方法 -

比较字符串

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string str1 = "This is test";
         string str2 = "This is text";

         if (String.Compare(str1, str2) == 0) {
            Console.WriteLine(str1 + " and " + str2 +  " are equal.");
         } else {
            Console.WriteLine(str1 + " and " + str2 + " are not equal.");
         }
         Console.ReadKey() ;
      }
   }
}

当上面的代码被编译并执行时,它会产生以下结果 -

This is test and This is text are not equal.

字符串包含字符串

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string str = "This is test";
         
         if (str.Contains("test")) {
            Console.WriteLine("The sequence 'test' was found.");
         }
         Console.ReadKey() ;
      }
   }
}

当上面的代码被编译并执行时,它会产生以下结果 -

The sequence 'test' was found.

获取子串

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string str = "Last night I dreamt of San Pedro";
         Console.WriteLine(str);
         string substr = str.Substring(23);
         Console.WriteLine(substr);
      }
   }
}

当上面的代码被编译并执行时,它会产生以下结果 -

San Pedro

连接字符串

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string[] starray = new string[]{"Down the way nights are dark",
            "And the sun shines daily on the mountain top",
            "I took a trip on a sailing ship",
            "And when I reached Jamaica",
            "I made a stop"};

         string str = String.Join("\n", starray);
         Console.WriteLine(str);
      }
   }
}

当上面的代码被编译并执行时,它会产生以下结果 -

Down the way nights are dark
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop