char 字符
C#中的一个 char 代表一个Unicode字符。 char 是 System.Char 的别名.
char c = 'a';
char newLine = '\n';
Console.WriteLine(c);
Console.WriteLine(System.Char.ToUpper(c));
Console.WriteLine(char.IsWhiteSpace(newLine));
Console.WriteLine(System.Char.ToUpperInvariant(c));//和语言环境无关
//GetUnicodeCategory 的静态方法,它返回一个 UnicodeCategory 枚举值
Console.WriteLine(char.GetUnicodeCategory(c));//LowercaseLetter
System.Char 定义了一系列静态方法对字符进行处理。
例如, ToUpper 、 ToLower 和 IsWhiteSpace 这些方法既可以通过 System.Char 类型进行调用也可以使用其别名 char 进行调用.
ToUpper 和 ToLower 会受到最终用户语言环境的影响,这可能会导致微妙的缺陷
在 .NET 中,System.Char 类提供了大量静态方法,用于处理单字符的分类、转换和校验。
这些方法在处理字符串逻辑、输入过滤和编码转换时非常高效。
以下是 Char 类常用的静态方法汇总:
1. 字符分类与校验 (Is... 方法)
这些方法返回 bool 值,用于判断字符是否属于特定类别。
| 方法名称 | 代码示例 | 功能解释 |
|---|---|---|
IsDigit |
Char.IsDigit('5') // True |
检查字符是否为十进制数字 (0-9)。 |
IsLetter |
Char.IsLetter('A') // True |
检查字符是否为字母(包括各种语言的字母)。 |
IsLetterOrDigit |
Char.IsLetterOrDigit('@') // False |
检查字符是字母还是数字。 |
IsLower |
Char.IsLower('a') // True |
检查字符是否为小写字母。 |
IsUpper |
Char.IsUpper('B') // True |
检查字符是否为大写字母。 |
IsNumber |
Char.IsNumber('½') // True |
检查字符是否为数字(比 IsDigit 范围广,包含分数等数字符号)。 |
IsPunctuation |
Char.IsPunctuation('.') // True |
检查字符是否为标点符号。 |
IsWhiteSpace |
Char.IsWhiteSpace(' ') // True |
检查字符是否为空白字符(含空格、制表符、换行符等)。 |
IsControl |
Char.IsControl('\n') // True |
检查字符是否为控制字符(如换行符、回车符)。 |
IsSymbol |
Char.IsSymbol('+') // True |
检查字符是否为数学符号、货币符号等符号。 |
2. 字符大小写转换
用于在不同大小写形式之间安全地转换。
| 方法名称 | 代码示例 | 功能解释 |
|---|---|---|
ToLower |
Char.ToLower('A') // 'a' |
将字符转换为其小写等效形式。 |
ToUpper |
Char.ToUpper('b') // 'B' |
将字符转换为其大写等效形式。 |
ToLowerInvariant |
Char.ToLowerInvariant('C') |
使用忽略区域设置(文化不相关)的规则转换为小写。 |
3. 数值与解析方法
用于处理字符表示的数值或在字符与字符串间转换。
| 方法名称 | 代码示例 | 功能解释 |
|---|---|---|
GetNumericValue |
Char.GetNumericValue('8') // 8.0 |
返回字符代表的数值(返回类型为 double)。对于 '½' 会返回 0.5。 |
Parse |
Char.Parse("A") // 'A' |
将长度为 1 的字符串转换为 Char 类型。 |
TryParse |
Char.TryParse("A", out char c) |
尝试转换字符串,成功返回 true 并赋值给 out 参数,失败不抛异常。 |
ToString |
Char.ToString('x') // "x" |
将字符转换为等效的字符串。 |
4. 编码与代理项支持
处理 Unicode 字符集中的高级特性(如 Emoji 或复杂符号)。
| 方法名称 | 代码示例 | 功能解释 |
|---|---|---|
IsHighSurrogate |
Char.IsHighSurrogate(str, 0) |
检查指定位置是否为 Unicode 高代理项。 |
IsLowSurrogate |
Char.IsLowSurrogate(str, 1) |
检查指定位置是否为 Unicode 低代理项。 |
IsSurrogatePair |
Char.IsSurrogatePair(hi, lo) |
检查两个字符是否组成一个有效的代理项对(用于表示 16 位以外的字符)。 |
ConvertFromUtf32 |
Char.ConvertFromUtf32(0x1F600) |
将 UTF-32 编码(码点)转换为包含代理项对的字符串(如生成 Emoji)。 |
使用建议
- 如果你在处理用户输入校验,优先使用
IsLetterOrDigit和IsWhiteSpace。 - 如果你在处理全球化应用(多语言),建议使用带有
CultureInfo参数的转换方法,或使用Invariant版本以确保在所有国家/地区的服务器上行为一致。
一个 char 字符占用16个二进制位,这足以表示基本多文种平面(Basic Multilingual Plane)中的所有Unicode字符。
但是如果超出了这个范围,就必须使用替代组(surrogate pair).