在C#,字符串是Unicode字符或字符数组的序列。 Unicode字符的范围是U + 0000到U + FFFF。字符数组也称为文本。因此,字符串是文本的表示形式。字符串是一个重要的概念,无论字符串是关键字还是对象还是类,人们都会感到困惑。因此,让我们弄清楚这个概念。
字符串由类System.String表示。 “字符串”关键字是System.String类的别名,而不是编写System.String,可以使用String ,它是System.String类的简写。因此我们可以说字符串和String都可以用作System.String类的别名。因此, 字符串是System.String类的对象。
例子:
string s1 = “GeeksforGeeks”; // creating the string using string keyword
String s2 = “GFG”; // creating the string using String class
System.String s3 = “Pro Geek”; // creating the string using String class
字符串类在.NET基类库中定义。换句话说,String对象是System.Char对象的顺序集合,它表示一个字符串。内存中String对象的最大大小为2GB或大约10亿个字符。 System.String类是不可变的,即一旦创建,其状态就无法更改。
程序:演示如何声明字符串和初始化字符串。另外,下面的程序在一行中显示了字符串的声明和初始化。
// C# program to declare string using
// string, String and System.String
// and initialization of string
using System;
class Geeks {
// Main Method
static void Main(string[] args)
{
// declare a string Name using
// "System.String" class
System.String Name;
// initialization of String
Name = "Geek";
// declare a string id using
// using an alias(shorthand)
// "String" of System.String
// class
String id;
// initialization of String
id = "33";
// declare a string mrk using
// string keyword
string mrk;
// initialization of String
mrk = "97";
// Declaration and initialization of
// the string in a single line
string rank = "1";
// Displaying Result
Console.WriteLine("Name: {0}", Name);
Console.WriteLine("Id: {0}", id);
Console.WriteLine("Marks: {0}", mrk);
Console.WriteLine("Rank: {0}", rank);
}
}
Name: Geek
Id: 33
Marks: 97
Rank: 1
琴弦特性:
- 它是参考类型。
- 它是不可变的(其状态不能更改)。
- 它可以包含空值。
- 它会使运算符(==)重载。
String和System.String之间的区别:
该字符串是System.String的别名。 String和System.String的含义相同,并且不会影响应用程序的性能。 “字符串”是C#中的关键字。因此,主要的区别在于上下文,如何使用它们:
- String用于声明,而System.String用于访问静态字符串方法。
- 字符串用于声明将使用预定义类型System.String的字段,属性等。这是简单的使用方法。
- 字符串必须使用System.String类方法,例如String.SubString,String.IndexOf等。该字符串只是System.String的别名。
注意:在.NET中,文本存储为Char对象的顺序集合,因此C#字符串的末尾没有以null结尾的字符。因此,C#字符串可以包含任意数量的嵌入式空字符(’\ 0’)。
字符串数组:我们还可以创建字符串数组并为其分配值。可以如下创建字符串数组:
- 句法:
String [] array_variable = new String[Length_of_array]
- 示例:为了说明字符串数组的创建并为其分配值
// C# program for an array of strings using System; class Geeks { // Main Method static void Main(string[] args) { String[] str_arr = new String[3]; // Initialising the array of strings str_arr[0] = "Geeks"; str_arr[1] = "For"; str_arr[2] = "Geeks"; // printing String array for(int i = 0; i < 3; i++) { Console.WriteLine("value at Index position "+i+" is "+str_arr[i]); } } }
输出:value at Index position 0 is Geeks value at Index position 1 is For value at Index position 2 is Geeks
从用户输入中读取字符串:可以从用户输入中读取字符串。控制台类的ReadLine()方法用于从用户输入中读取字符串。
- 例子:
// C# program to demonstrate Reading // String from User-Input using System; class Geeks { // Main Method static void Main(string[] args) { Console.WriteLine("Enter the String"); // Declaring a string object read_user // and taking the user iput using // ReadLine() method String read_user = Console.ReadLine(); // Displaying the user input Console.WriteLine("User Entered: " + read_user); } }
输入:
Hello Geeks !
输出:
Enter the String
User Entered: Hello Geeks !
创建字符串的不同方法:
- 从字面量创建字符串
- 使用串联创建字符串
- 使用构造函数创建字符串
- 使用属性或方法创建字符串
- 使用格式创建字符串
从字面量创建字符串:这是创建字符串的最常见方法。在这种情况下,用户必须定义字符串变量,然后在双引号内分配值。我们可以在双引号中使用任何类型的字符,但某些特殊字符(例如反斜杠(\))除外。
- 程序:说明使用字面量的字符串创建
// C# program to demonstarte the // string creation using literals using System; class Geeks { // Main Method static void Main(string[] args) { string str1 = "GeeksforGeeks"; Console.WriteLine(str1); // Give Error Unrecognized escape sequence \H, \G, \p // string str3 = "X:\Home\GFG\Geeks.cs"; // Console.WriteLine(str3); // using double slash \\ string str2 = "X:\\Home\\GFG\\program.cs"; Console.WriteLine(str2); } }
输出:GeeksforGeeks X:\Home\GFG\program.cs
使用串联创建字符串:我们可以通过在C#中使用字符串串联运算符“ +”来创建字符串。要根据String实例和字符串字面量的任意组合创建单个字符串,可以使用字符串串联运算符(+)组合或合并一个或多个字符串。
- 程序:说明字符串串联运算符的用法
// C# program to demonstrate the use of // the string concatenation operator. using System; class Geeks { // Main Method public static void Main() { string s1 = "Geek"; string s2 = "s"; string s3 = "For"; string s4 = "Geek"; // using concatenation operator string str = s1 + s2 + s3 + s4 + "s"; Console.WriteLine(str); } }
输出:GeeksForGeeks
使用构造函数创建字符串: String类是几个重载的构造函数,它们采用字符或字节数组。一些构造函数将指向字符数组或带符号字节数组的指针作为参数。
- 程序:演示如何使用构造函数创建字符串
// C# program to demonstrate the creation // of string using the constructor using System; class Geeks { // Main Method public static void Main() { char[] chars = { 'G', 'E', 'E', 'K', 'S' }; // Create a string from a character array. string str1 = new string(chars); Console.WriteLine(str1); // Create a string that consists of // a character repeated 20 times. string str2 = new string('G', 10); Console.WriteLine(str2); /* below comment part give the error for unsafe mode go through offline sbyte[] bytes = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x00 }; string stringtoBytes = null; string stringtomChars = null; unsafe { fixed (sbyte* pbytes = bytes) { // Create a string from a pointer // to a signed byte array. stringFromBytes = new string(pbytes); } fixed (char* pchars = chars) { // Create a string from a pointer // to a character array. stringFromChars = new string(pchars); } } Console.WriteLine(stringtoBytes); // output : ABCDE Console.WriteLine(stringtoChars); // output : GEEKS */ } }
输出:GEEKS GGGGGGGGGG
使用属性或方法创建字符串:检索属性或调用始终返回字符串。例如,使用String类的方法从较大的字符串提取子字符串。
- 程序:说明使用属性或方法创建字符串
// C# program to extract a substring from a larger // string using methods of the String class using System; class Geeks { // Main Method public static void Main() { string sentence = "Geeks For Geeks"; // Extract the second word. // taking the first space position value int startpos = sentence.IndexOf(" ") + 1; // taking the second space position value int endpos = sentence.IndexOf(" ", startpos) - startpos; // now extract second word from the sentence string wrd = sentence.Substring(startpos, endpos); Console.WriteLine(wrd); } }
输出:For
使用格式创建字符串: “格式”方法用于将值或对象转换为其字符串表示形式。 String.Format方法返回一个字符串。
- 程序:演示使用Format方法创建字符串
// C# method to illustrate the creation // of string using format method using System; class Geeks { // Main Method public static void Main() { int no = 10; string cname = "BMW"; string clr = "Red"; // string creation using string.Format method string str = string.Format("{0} {1} Cars color " + "are {2}", no.ToString(), cname, clr); Console.WriteLine(str); } }
输出:10 BMW Cars color are Red
字符串类属性:字符串类具有两个属性,如下所示:
- 字符:用于获取当前String对象中指定位置的Char对象。
- 长度:用于获取当前String对象中的字符数。要了解有关字符串类属性的更多信息,请转到C#中的字符串属性。