前文:
在 C# 中,可以使用字符数组来表示字符串,但是,更常见的做法是使用 string
关键字来声明一个字符串变量,string
关键字是 System.String
类的别名。
创建对象
您可以使用以下方法之一来创建 string
对象:
- 通过给
String
变量指定一个字符串 - 通过使用
String
类构造函数 - 通过使用字符串串联运算符(
+
) - 通过检索属性或调用一个返回字符串的方法
- 通过格式化方法来转换一个值或对象为它的字符串表示形式
实例:
using System;
namespace StringApplication
{
class Program
{
static void Main(string[] args)
{
// 字符串,字符串连接
string fname, lname;
fname = "Rowan";
lname = "Atkinson";
string fullname = fname + lname;
Console.WriteLine($"Full Name: {fullname}");
// 通过使用 string 构造函数
char[] letters = { 'H', 'e', 'l', 'l','o' };
string greetings = new string(letters);
Console.WriteLine($"Greetings: {greetings}");
// 方法返回字符串
string[] sarray = { "Hello", "From", "Tutorials", "Point" };
string message = String.Join(" ", sarray);
Console.WriteLine($"Message: {message}");
// 用于转化值的格式化方法
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format($"Message sent at {waiting:t} on {waiting:D}");
Console.WriteLine($"Message: {chat}");
Console.ReadKey() ;
}
}
}
输出:
Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 17:58 on Wednesday, 10 October 2012
常用属性和方法
以下内容生成模型:QwQ-32B,生成时间:2025 03-11 14:39
方法/属性 | 用途 | 示例 |
---|---|---|
Length |
获取字符串长度 | str.Length |
Concat |
拼接字符串 | String.Concat(a, b) |
Join |
用分隔符拼接数组 | String.Join(", ", array) |
IndexOf |
查找子字符串位置 | str.IndexOf("World") |
Substring |
截取子字符串 | str.Substring(0, 5) |
Replace |
替换子字符串 | str.Replace("old", "new") |
Split |
拆分字符串为数组 | str.Split(',') |
ToUpper / ToLower |
转换大小写 | str.ToUpper() |
StartsWith |
判断是否以指定子字符串开头 | str.StartsWith("He") |
Contains |
判断是否包含子字符串 | str.Contains("lo") |
Trim |
去除前后空白 | str.Trim() |
Format |
格式化字符串 | String.Format("{0} {1}", a, b) |
Length属性
作用:获取字符串的字符数。
string str = "Hello";
int length = str.Length; // 输出 5
Concat静态方法
作用:拼接多个字符串。
string result = String.Concat("Hello", " ", "World"); // 输出 "Hello World"
Join静态方法
作用:用指定分隔符拼接字符串数组。
string[] names = { "Alice", "Bob", "Charlie" };
string joined = String.Join(", ", names); // 输出 "Alice, Bob, Charlie"
IndexOf方法
作用:查找子字符串或字符的位置。
string str = "Hello World";
int index = str.IndexOf("World"); // 返回 6(从索引 6 开始)
int charIndex = str.IndexOf('o'); // 返回 4(第一个 'o' 的位置)
Substring方法
作用:截取子字符串。
string str = "Hello World";
string sub1 = str.Substring(0, 5); // "Hello"(从索引0开始,长度5)
string sub2 = str.Substring(6); // "World"(从索引6到末尾)
Replace方法
作用:替换字符串中的子字符串。
string str = "Hello World";
string replaced = str.Replace("World", "C#"); // 输出 "Hello C#"
Split方法
作用:按分隔符拆分字符串为数组。
string str = "apple,banana,cherry";
string[] fruits = str.Split(','); // 数组包含 "apple", "banana", "cherry"
ToUpper和ToLower方法
作用:转换字符串为大写或小写。
string str = "Hello";
string upper = str.ToUpper(); // "HELLO"
string lower = str.ToLower(); // "hello"
StartsWith和EndsWith方法
作用:判断字符串是否以指定子字符串开头或结尾。
string str = "Hello World";
bool startsWith = str.StartsWith("Hell"); // true
bool endsWith = str.EndsWith("orld"); // true
Contains方法
作用:判断字符串是否包含指定子字符串。
string str = "Hello World";
bool hasWorld = str.Contains("World"); // true
Trim方法
作用:去除字符串前后空白字符。
string str = " Hello World ";
string trimmed = str.Trim(); // "Hello World"
Equals和Compare方法
作用:比较字符串内容。
string a = "Hello";
string b = "hello";
bool equals = a.Equals(b); // false(区分大小写)
int compare = String.Compare(a, b, true); // 0(忽略大小写)
Format静态方法
作用:格式化字符串(如插入变量)。
string formatted = String.Format("Name: {0}, Age: {1}", "Alice", 30);
// 输出 "Name: Alice, Age: 30"
关键点
- 字符串是不可变的(Immutable):所有方法操作都会返回新字符串,原字符串不变。
- 区分大小写:
Compare
、Equals
等方法可通过参数控制是否忽略大小写。 - 空字符串:
string.Empty
是空字符串的推荐用法,而非" "
。
通过这些方法,可以高效地处理字符串的拼接、查找、转换和格式化等常见需求。
格式化时间
DateTime dt = new DateTime(2017,4,1,13,16,32,108);
string.Format("{0:y yy yyy yyyy}",dt); // 17 17 2017 2017
string.Format("{0:M MM MMM MMMM}", dt);// 4 04 四月 四月
string.Format("{0:d dd ddd dddd}", dt);// 1 01 周六 星期六
string.Format("{0:t tt}", dt); // 下 下午
string.Format("{0:H HH}", dt); // 13 13
string.Format("{0:h hh}", dt); // 1 01
string.Format("{0:m mm}", dt); // 16 16
string.Format("{0:s ss}", dt); // 32 32
string.Format("{0:F FF FFF FFFF FFFFF FFFFFF FFFFFFF}", dt); // 1 1 108 108 108 108 108
string.Format("{0:f ff fff ffff fffff ffffff fffffff}", dt); // 1 10 108 1080 10800 108000 1080000
string.Format("{0:z zz zzz}", dt); // +8 +08 +08:00
string.Format("{0:yyyy/MM/dd HH:mm:ss.fff}",dt); // 2017/04/01 13:16:32.108
string.Format("{0:yyyy/MM/dd dddd}", dt); // 2017/04/01 星期六
string.Format("{0:yyyy/MM/dd dddd tt hh:mm}", dt); // 2017/04/01 星期六 下午 01:16
string.Format("{0:yyyyMMdd}", dt); // 20170401
string.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", dt); // 2017-04-01 13:16:32.108
// 或者用 *.ToString() 也可以实现相同的效果:
DateTime dt = new DateTime(2017,4,1,13,16,32,108);
dt.ToString("y yy yyy yyyy"); // 17 17 2017 2017
dt.ToString("M MM MMM MMMM"); // 4 04 四月 四月
dt.ToString("d dd ddd dddd"); // 1 01 周六 星期六
dt.ToString("t tt"); // 下 下午
dt.ToString("H HH"); // 13 13
dt.ToString("h hh"); // 1 01
dt.ToString("m mm"); // 16 16
dt.ToString("s ss"); // 32 32
dt.ToString("F FF FFF FFFF FFFFF FFFFFF FFFFFFF"); //1 1 108 108 108 108 108
dt.ToString("f ff fff ffff fffff ffffff fffffff"); //1 10 108 1080 10800 108000 1080000
dt.ToString("z zz zzz");//+8 +08 +08:00
dt.ToString("yyyy/MM/dd HH:mm:ss.fff"); // 2017/04/01 13:16:32.108
dt.ToString("yyyy/MM/dd dddd"); // 2017/04/01 星期六
dt.ToString("yyyy/MM/dd dddd tt hh:mm"); // 2017/04/01 星期六 下午 01:16
dt.ToString("yyyyMMdd"); // 20170401
dt.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 2017-04-01 13:16:32.108