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新建.net 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++)
            {
                Console.WriteLine($"字符的ASCII码是【{i.ToString().PadLeft(3)}】的字符类型是【{char.GetUnicodeCategory((char)i)}】");
            }            
            Console.ReadLine();
        }
    }
}
 

测试结果:

字符类型:

猜你喜欢

转载自blog.csdn.net/ylq1045/article/details/112445361