📜  C#|细绳

📅  最后修改于: 2021-05-29 20:01:38             🧑  作者: Mango

在C#,字符串是Unicode字符或字符数组的序列。 Unicode字符的范围是U + 0000到U + FFFF。字符数组也称为文本。因此,字符串是文本的表示形式。字符串是一个重要的概念,无论字符串是关键字还是对象还是类,人们都会感到困惑。因此,让我们弄清楚这个概念。

字符串由类System.String表示。 “字符串”关键字是System.String类的别名,而不是编写System.String,可以使用String ,它是System.String类的简写。因此我们可以说字符串和String都可以用作System.String类的别名。因此, 字符串是System.String类的对象

例子:

字符串类在.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

琴弦特性:

  • 它是参考类型。
  • 它是不可变的(其状态不能更改)。
  • 它可以包含空值。
  • 它会使运算符(==)重载。

StringSystem.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);
      
        }
          
    }
    

输入:

输出:

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
    

字符串类属性:字符串类具有两个属性,如下所示:

  1. 字符:用于获取当前String对象中指定位置的Char对象。
  2. 长度:用于获取当前String对象中的字符数。要了解有关字符串类属性的更多信息,请转到C#中的字符串属性