C#中字符的表⽰⽅法以及字符类型
在C#中,字符char是Unicode字符,数字范围0~65535(0xFFFF),这和C++的char是不同的。
char字符可隐式转换为ushort、int、uint、long、ulong、float、double、decimal类型。
两个char(或者 char与整数)进⾏四则运算,相当于整数的四则运算,返回⼀个Int32。
反斜杠\作为转义字符
某些控制字符 如回车 使⽤ '\r'来转义表⽰, 反斜杠(\)使⽤'\\'。双引号(")使⽤'\"'来表⽰
字符char有三种表⽰法:
1.单引号表⽰法:如'P','\n','\\'
2.\x开头表⽰法,后⾯跟1~4个⼗六进制:如 '\x0D','\x34E', '\x56FD'
3.\u开头表⽰法,后⾯必须有4个⼗六进制:如'\u0041','\u4e2d'
Visual Studio 2019新建 5.0 控制台应⽤程序CharDemo,输⼊测试代码:
using System;
using System.Collections.Generic;
using System.Linq;
namespace CharDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("在C#中,字符都是Unicode编码,对应基础数据类型ushort(UInt16)。范围0~65535,即0~0xFFFF");            Console.WriteLine("字符可隐式转换为ushort、int、uint、long、ulong、float、double、decimal类型");
float fTest = 'A';
Console.WriteLine(fTest);
Console.WriteLine($"两个字符进⾏四则运算,相当于该字符对应的整数的四则运算,因此结果是⼀个Int32类型:{('A' +
'\n').GetType()}");
int testCharAdd = 'A' + 'a';//相当于65+97
Console.WriteLine($"【'A' + 'a'】的结果:(65+97)={testCharAdd}");
char ch = '中';
ushort us = ch;
Console.WriteLine($"Unicode字符【{ch}】对应的数字为:【{us}】=0x{us.ToString("X4")}");
Console.WriteLine($"数字【{us}】对应的低字节在前字节数组为:【{string.Join(" ", BitConverter.GetBytes(us).Select(b => b.ToString("X2")))}】");
Console.WriteLine($"字符实现了IComparable接⼝,可以与数字进⾏⽐较。如【{'\u4E2D' == 0x4e2d}】,⽐较结果:
【{'中'.CompareTo('\x4E2D') == 0}】");
Console.WriteLine("字符有三种表⽰⽅法:");
char chShow = 'M';
Console.WriteLine($"  1.单引号表⽰法:如【'{chShow}'】、【'\\t'】");
chShow = '\x004D';
Console.WriteLine($"  2.\\x开头表⽰法,后⾯跟1~4个⼗六进制:如【'\\x{((ushort)chShow).ToString("X4")}'】");
chShow = '\u004D';
Console.WriteLine($"  3.\\u开头表⽰法,后⾯必须有4个⼗六进制:如【'\\u{((ushort)chShow).ToString("X4")}'】");
Console.WriteLine("查0~255之间所有的空⽩字符...");
List<char> list = new List<char>();
for (char c = '\0'; c < 256; c++)
{
if (char.IsWhiteSpace(c))
{
list.Add(c);
}
}
//⼀个字符串的Trim()函数 就是清除所有起始和终⽌字符中含有以下字符【9,10,11,12,13,32】
//空⽩字符 9 【'\t'⽔平制表符】,10【'\n'换⾏符】,11'【\v'垂直制表符】,12【'\f'换页符】,13【'\r'回车符】,32【' '键盘Space 键】
Console.WriteLine($"空⽩字符(ASCII)有【{list.Count}】个:{string.Join(",", list.Select(c => (int)c))}");
for (int i = 0; i < 128; i++)
{writeline方法属于类
Console.WriteLine($"字符的ASCII码是【{i.ToString().PadLeft(3)}】的字符类型是
【{char.GetUnicodeCategory((char)i)}】");
}
Console.ReadLine();
}
}
}
测试结果:
字符类型:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。