目录
C# 字符串(String)
创建 String 对象
可以使用以下方法之一来创建 string 对象:
1、通过给 String 变量指定一个字符串
string str1 = "Hello, World!"; // 使用字符串字面量直接赋值给变量
string str2 = ""; // 创建一个空字符串
2、通过使用 String 类构造函数
string str3 = new string('a', 5); // 创建由 5 个字符 'a' 组成的字符串
string str4 = new string(new char[] { 'H', 'e', 'l', 'l', 'o' }); // 使用字符数组创建字符串
3、通过使用字符串串联运算符( + )
string str5 = "Hello" + " " + "World!"; // 将多个字符串连接成一个新的字符串
4、通过检索属性或调用一个返回字符串的方法
string str6 = DateTime.Now.ToString(); // 获取当前日期和时间的字符串表示形式
5、通过格式化方法来转换一个值或对象为它的字符串表示形式
int num = 42;
string str7 = string.Format("答案是 {0}.", num); // 使用占位符将值格式化为字符串
String 类的属性
String 类有以下两个属性:
序号 | 属性名称 & 描述 |
---|---|
1 | Chars 在当前 String 对象中获取 Char 对象的指定位置。 |
2 | Length 在当前的 String 对象中获取字符数。 |
String 类的方法
String 类有许多方法用于 string 对象的操作。下面的表格提供了一些最常用的方法:
序号 | 方法名称 & 描述 |
---|---|
1 | public static int Compare( string strA, string strB ) 比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。该方法区分大小写。 |
2 | public static int Compare( string strA, string strB, bool ignoreCase ) 比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。但是,如果布尔参数为真时,该方法不区分大小写。 |
3 | public static string Concat( string str0, string str1 ) 连接两个 string 对象。 |
4 | public static string Concat( string str0, string str1, string str2 ) 连接三个 string 对象。 |
5 | public static string Concat( string str0, string str1, string str2, string str3 ) 连接四个 string 对象。 |
6 | public bool Contains( string value ) 返回一个表示指定 string 对象是否出现在字符串中的值。 |
7 | public static string Copy( string str ) 创建一个与指定字符串具有相同值的新的 String 对象。 |
8 | public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count ) 从 string 对象的指定位置开始复制指定数量的字符到 Unicode 字符数组中的指定位置。 |
9 | public bool EndsWith( string value ) 判断 string 对象的结尾是否匹配指定的字符串。 |
10 | public bool Equals( string value ) 判断当前的 string 对象是否与指定的 string 对象具有相同的值。 |
11 | public static bool Equals( string a, string b ) 判断两个指定的 string 对象是否具有相同的值。 |
12 | public static string Format( string format, Object arg0 ) 把指定字符串中一个或多个格式项替换为指定对象的字符串表示形式。 |
13 | public int IndexOf( char value ) 返回指定 Unicode 字符在当前字符串中第一次出现的索引,索引从 0 开始。 |
14 | public int IndexOf( string value ) 返回指定字符串在该实例中第一次出现的索引,索引从 0 开始。 |
15 | public int IndexOf( char value, int startIndex ) 返回指定 Unicode 字符从该字符串中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
16 | public int IndexOf( string value, int startIndex ) 返回指定字符串从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
17 | public int IndexOfAny( char[] anyOf ) 返回某一个指定的 Unicode 字符数组中任意字符在该实例中第一次出现的索引,索引从 0 开始。 |
18 | public int IndexOfAny( char[] anyOf, int startIndex ) 返回某一个指定的 Unicode 字符数组中任意字符从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
19 | public string Insert( int startIndex, string value ) 返回一个新的字符串,其中,指定的字符串被插入在当前 string 对象的指定索引位置。 |
20 | public static bool IsNullOrEmpty( string value ) 指示指定的字符串是否为 null 或者是否为一个空的字符串。 |
21 | public static string Join( string separator, string[] value ) 连接一个字符串数组中的所有元素,使用指定的分隔符分隔每个元素。 |
22 | public static string Join( string separator, string[] value, int startIndex, int count ) 连接一个字符串数组中的指定位置开始的指定元素,使用指定的分隔符分隔每个元素。 |
23 | public int LastIndexOf( char value ) 返回指定 Unicode 字符在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。 |
24 | public int LastIndexOf( string value ) 返回指定字符串在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。 |
25 | public string Remove( int startIndex ) 移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串。 |
26 | public string Remove( int startIndex, int count ) 从当前字符串的指定位置开始移除指定数量的字符,并返回字符串。 |
27 | public string Replace( char oldChar, char newChar ) 把当前 string 对象中,所有指定的 Unicode 字符替换为另一个指定的 Unicode 字符,并返回新的字符串。 |
28 | public string Replace( string oldValue, string newValue ) 把当前 string 对象中,所有指定的字符串替换为另一个指定的字符串,并返回新的字符串。 |
29 | public string[] Split( params char[] separator ) 返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。 |
30 | public string[] Split( char[] separator, int count ) 返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。 |
31 | public bool StartsWith( string value ) 判断字符串实例的开头是否匹配指定的字符串。 |
32 | public char[] ToCharArray() 返回一个带有当前 string 对象中所有字符的 Unicode 字符数组。 |
33 | public char[] ToCharArray( int startIndex, int length ) 返回一个带有当前 string 对象中所有字符的 Unicode 字符数组,从指定的索引开始,直到指定的长度为止。 |
34 | public string ToLower() 把字符串转换为小写并返回。 |
35 | public string ToUpper() 把字符串转换为大写并返回。 |
36 | public string Trim() 移除当前 String 对象中的所有前导空白字符和后置空白字符。 |
上面的方法列表并不详尽,请访问 MSDN 库,查看完整的方法列表和 String 类构造函数。
实例
using System;
class Program
{
static void Main()
{
// 使用 Length 属性获取字符串长度
string str = "Hello, World!";
int length = str.Length;
Console.WriteLine("字符串的长度为:" + length);
// 使用 Substring 方法截取子字符串
string subStr = str.Substring(7, 5);
Console.WriteLine("截取的子字符串为:" + subStr);
// 使用 ToUpper 方法将字符串转换为大写
string upperStr = str.ToUpper();
Console.WriteLine("转换为大写后的字符串为:" + upperStr);
// 使用 Replace 方法替换字符串中的部分内容
string replacedStr = str.Replace("World", "宇宙");
Console.WriteLine("替换后的字符串为:" + replacedStr);
}
}
C#的string.Format格式化日期
在 C# 中,可以使用 string.Format 方法来格式化日期。可以在格式字符串中使用特定的日期和时间格式说明符来定义日期的显示方式。
以下是一些常用的日期和时间格式说明符:
- "d": 短日期格式(例如:11/13/2023)
- "D": 长日期格式(例如:2023年11月13日)
- "t": 短时间格式(例如:11:28 AM)
- "T": 长时间格式(例如:11:28:14 AM)
- "f": 完整日期时间格式(例如:2023年11月13日 上午 11:28)
- "F": 完整日期时间格式(包含秒)(例如:2023年11月13日 上午 11:28:14)
- "g": 一般日期时间格式(例如:11/13/2023 11:28 AM)
- "G": 一般日期时间格式(包含秒)(例如:11/13/2023 11:28:14 AM)
- "M": 月日格式(例如:11月13日)
- "Y": 年份和月份格式(例如:2023年11月)
using System;
class Program
{
static void Main()
{
DateTime dt = DateTime.Now;
// 年份格式
Console.WriteLine(string.Format("{0:y yy yyy yyyy}", dt));// 23 23 2023 2023
// 月份格式
Console.WriteLine(string.Format("{0:M MM MMM MMMM}", dt));// 11 11 11月 十一月
// 日期格式
Console.WriteLine(string.Format("{0:d dd ddd dddd}", dt));// 13 13 周一 星期一
// 时间格式(短)
Console.WriteLine(string.Format("{0:t tt}", dt));// 下 下午
// 小时格式(24小时制)
Console.WriteLine(string.Format("{0:H HH}", dt));// 19 19
// 小时格式(12小时制)
Console.WriteLine(string.Format("{0:h hh}", dt));// 7 07
// 分钟格式
Console.WriteLine(string.Format("{0:m mm}", dt));// 43 43
// 秒格式
Console.WriteLine(string.Format("{0:s ss}", dt));//45 45
// 毫秒格式
Console.WriteLine(string.Format("{0:F FF FFF FFFF FFFFF FFFFFF FFFFFFF}", dt));// 5 56 567 5674 56745 567456 5674566
// 毫秒格式(去除末尾的0)
Console.WriteLine(string.Format("{0:f ff fff ffff fffff ffffff fffffff}", dt));// 1 15 152 1521 15219 152195 1521954
// 时区格式
Console.WriteLine(string.Format("{0:z zz zzz}", dt));// +8 +08 +08:00
// 自定义格式
Console.WriteLine(string.Format("{0:yyyy/MM/dd HH:mm:ss.fff}", dt));// "2023/11/13 19:46:02.327"
Console.WriteLine(string.Format("{0:yyyy/MM/dd dddd}", dt));// "2023/11/13 星期一"
Console.WriteLine(string.Format("{0:yyyy/MM/dd dddd tt hh:mm}", dt));// "2023/11/13 星期一 下午 07:47"
Console.WriteLine(string.Format("{0:yyyyMMdd}", dt));// "20231113"
Console.WriteLine(string.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", dt));// "2023-11-13 19:47:57.395"
}
}
上面的代码里用到的String.Format 方法并不详尽,请访问微软的官方文档(或者看这篇文章进行学习),查看完整的方法内容。
除去string.Format()可以对日期进行格式化之外,*.ToString()也可以实现相同的效果:
using System;
class Program
{
static void Main()
{
DateTime dt = DateTime.Now;
dt.ToString("y yy yyy yyyy");
dt.ToString("M MM MMM MMMM");
dt.ToString("d dd ddd dddd");
dt.ToString("t tt");
dt.ToString("H HH");
dt.ToString("h hh");
dt.ToString("m mm");
dt.ToString("s ss");
dt.ToString("F FF FFF FFFF FFFFF FFFFFF FFFFFFF");
dt.ToString("f ff fff ffff fffff ffffff fffffff");
dt.ToString("z zz zzz");
dt.ToString("yyyy/MM/dd HH:mm:ss.fff");
dt.ToString("yyyy/MM/dd dddd");
dt.ToString("yyyy/MM/dd dddd tt hh:mm");
dt.ToString("yyyyMMdd");
dt.ToString("yyyy-MM-dd HH:mm:ss.fff");
}
}