C# String:字符串

在 C# 中,string(或 String)关键字是 System.String 类的别名,其中提供了定义字符串以及操作字符串的一系列方法,下面就来详细介绍一下。

1、声明和初始化字符串

您可以使用以下方式来创建字符串
  • 为 String 类型的变量赋值一个字符串;
  • 使用 String 类的构造函数;
  • 使用字符串串联运算符 +
  • 通过检索属性或调用返回字符串的方法;
  • 通过调用格式化方法将值或对象转换为其字符串表示形式。

下面通过一个示例来演示一下:
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args) 
        { 
            // 使用常规字符串为字符串变量赋值
            string name = "C语言中文网";
            // 声明一个字符串并初始化为空
            string str1 = "欢迎访问:" + name;
            Console.WriteLine("str1 的值为:" + str1);

            // 使用 System.String.Empty 定义一个空字符串
            string str2 = System.String.Empty;
            Console.WriteLine("str2 的值为:" + str2);

            // 使用 System.String 类
            System.String url = "http://c.biancheng.net";;
            Console.WriteLine("url 的值为:" + url);

            // 在局部变量中(即在方法体中)可以使用 var 来代替具体数据类型来定义变量
            var temp = "C#教程";
            Console.WriteLine("temp 的值为:" + temp);

            // 定义一个常量字符串
            const string str3 = "这是一个常量字符串";
            Console.WriteLine("str3 的值为:" + str3);

            // 使用字符串构造函数定义字符串
            char[] letters = { 'H', 'e', 'l', 'l', 'o' };
            // string[] letters = { "C","语","言"};
            string message = new string(letters);
            Console.WriteLine("message 的值为:" + message);
        }
    }
}
运行结果如下:

str1 的值为:欢迎访问:C语言中文网
str2 的值为:
url 的值为:http://c.biancheng.net
temp 的值为:C#教程
str3 的值为:这是一个常量字符串
message 的值为:Hello

2、String 类中的属性

String 类中提供了两个属性,如下表所示:

属性 描述
Chars[Int32] 获取指定字符在字符串中的位置
Length 获取当前 String 对象中的字符数(字符串的长度)

3、String 类中的方法

String 类中提供了许多用来操作字符串的方法,下表中为大家列举了 String 类中一些比较常用的方法:

方法 描述
Clone() 返回对此 String 实例的引用
Compare(String, String) 比较两个指定的 String 对象,并返回一个指示二者在排序顺序中的相对位置的整数
CompareOrdinal(String, String) 通过比较每个字符串中的字符,来比较两个字符串是否相等
CompareTo(String) 将一个字符串与另一个字符串进行比较
Concat(String, String) 连接两个指定的字符串
Contains(String) 判断一个字符串中是否包含零一个字符串
Copy(String) 将字符串的值复制一份,并赋值给另一个字符串
CopyTo(Int32, Char[], Int32, Int32) 从字符串中复制指定数量的字符到一个字符数组中
EndsWith(String) 用来判断字符串是否以指定的字符串结尾
Equals(String, String) 判断两个字符串是否相等
Format(String, Object) 将字符串格式化为指定的字符串表示形式
GetEnumerator() 返回一个可以循环访问此字符串中的每个字符的对象
GetHashCode() 返回该字符串的哈希代码
GetType() 获取当前实例的类型
GetTypeCode() 返回字符串的类型代码
IndexOf(String) 返回字符在字符串中的首次出现的索引位置,索引从零开始
Insert(Int32, String) 在字符串的指定位置插入另一个字符串,并返回新形成的字符串
Intern(String) 返回指定字符串的内存地址
IsInterned(String) 返回指定字符串的内存地址
IsNormalized() 判断此字符串是否符合 Unicode 标准
IsNullOrEmpty(String) 判断指定的字符串是否为空(null)或空字符串("")
IsNullOrWhiteSpace(String) 判断指定的字符串是否为 null、空或仅由空白字符组成
Join(String, String[]) 串联字符串数组中的所有元素,并将每个元素使用指定的分隔符分隔开
LastIndexOf(Char) 获取某个字符在字符串中最后一次出现的位置
LastIndexOfAny(Char[]) 获取一个或多个字符在字符串中最后一次出现的位置
Normalize() 返回一个新字符串,新字符串与原字符串的值相等,但其二进制表示形式符合 Unicode 标准
PadLeft(Int32) 返回一个指定长度的新字符串,新字符串通过在原字符串左侧填充空格来达到指定的长度,从而实现右对齐
PadRight(Int32) 返回一个指定长度的新字符串,新字符串通过在原字符串右侧填充空格来达到指定的长度,从而实现左对齐
Remove(Int32) 返回一个指定长度的新字符串,将字符串中超出长度以外的部分全部删除
Replace(String, String) 使用指定字符替换字符串中的某个字符,并返回新形成的字符串
Split(Char[]) 按照某个分隔符将一个字符串拆分成一个字符串数组
StartsWith(String) 判断字符串是否使用指定的字符串开头
Substring(Int32) 从指定的位置截取字符串
ToCharArray() 将字符串中的字符复制到 Unicode 字符数组
ToLower() 将字符串中的字母转换为小写的形式
ToLowerInvariant() 使用固定区域性的大小写规则将字符串转换为小写的形式
ToString() 将其它数据类型转换为字符串类型
ToUpper() 将字符串中的字母转换为大写形式
Trim() 删除字符串首尾的空白字符
TrimEnd(Char[]) 删除字符串尾部的空白字符
TrimStart(Char[]) 删除字符串首部的空白字符

上表中只列举了一些 String 类中常用方法,大家可以通过查阅 C# 的官方文档来了解 String 类中的全部的方法介绍。

下面通过一些示例来演示一下 String 类中方法的使用。

【示例】比较两个字符串是否相同:
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args) 
        { 
            string str1 = "http://c.biancheng.net/";
            string str2 = "c.biancheng.net";
            if (String.Compare(str1, str2) == 0) {
                Console.WriteLine(str1 + " 与 " + str2 + " 相同");
            } else {
                Console.WriteLine(str1 + " 与 " + str2 + " 不同");
            }
            Console.ReadKey();
        }
    }
}
运行结果如下:

http://c.biancheng.net/ 与 c.biancheng.net 不同

【示例】判断一个字符串是否包含在另一个字符串中:
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args) 
        { 
            string str1 = "http://c.biancheng.net/";
            string str2 = "biancheng";
        
            if (str1.Contains(str2)) {
                Console.WriteLine(str1 + " 中包含 " + str2);
            }else{
                Console.WriteLine(str1 + " 中不包含 " + str2);
            }
            Console.ReadKey() ;
        }
    }
}
运行结果如下:

http://c.biancheng.net/ 中包含 biancheng

【示例】从一个字符串中截取指定长度的字符串:
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args) 
        { 
            string str = "http://c.biancheng.net/";

            Console.WriteLine("原字符串:" + str);
            string substr = str.Substring(7);
            Console.WriteLine("截取之后的字符串:" + substr);
        }
    }
}
运行结果如下:

原字符串:http://c.biancheng.net/
截取之后的字符串:c.biancheng.net/

【示例】将数组中的元素合并为字符串:
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args) 
        { 
            string[] strarray = new string[]{
                "C语言中文网",
                "http://c.biancheng.net/",
                "C# 教程"
            };

            string str = String.Join(" ", strarray);
            Console.WriteLine(str);
        }
    }
}
运行结果如下:

C语言中文网 http://c.biancheng.net/ C# 教程