.NET基础-字符

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)。

使用建议

  • 如果你在处理用户输入校验,优先使用 IsLetterOrDigitIsWhiteSpace
  • 如果你在处理全球化应用(多语言),建议使用带有 CultureInfo 参数的转换方法,或使用 Invariant 版本以确保在所有国家/地区的服务器上行为一致。

一个 char 字符占用16个二进制位,这足以表示基本多文种平面(Basic Multilingual Plane)中的所有Unicode字符。
但是如果超出了这个范围,就必须使用替代组(surrogate pair).

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容