C#中字符和字符串总结

时间:2021-10-22 05:43:18

Char类是C#提供的字符类型,String是C#提供的字符串类型。

字符:

  Char类在C#中表示一个Unicode字符。

  Char类只定义一个Unicode字符。

  Char类常用的方法及说明如下:

方    法

说    明

IsControl

指示指定的Unicode字符是否属于控制字符类别

IsDigit

指示某个Unicode字符是否属于十进制数字类别

IsHighSurrogate

指示指定的Char对象是否为高代理项

IsLetter

指示某个Unicode字符是否属于字母类别

IsLetterOrDigit

指示某个Unicode字符是属于字母类别还是属于十进制数字类别

IsLower

指示某个Unicode字符是否属于小写字母类别

IsLowSurrogate

指示指定的Char对象是否为低代理项

IsNumber

指示某个Unicode字符是否属于数字类别

IsPunctuation

指示某个Unicode字符是否属于标点符号类别

IsSeparator

指示某个Unicode字符是否属于分隔符类别

IsSurrogate

指示某个Unicode字符是否属于代理项字符类别

IsSurrogatePair

指示两个指定的Char对象是否形成代理项对

IsSymbol

指示某个Unicode字符是否属于符号字符类别

IsUpper

指示某个Unicode字符是否属于大写字母类别

IsWhiteSpace

指示某个Unicode字符是否属于空白类别

Parse

将指定字符串的值转换为它的等效Unicode字符

ToLower

将Unicode字符的值转换为它的小写等效项

ToLowerInvariant

使用固定区域性的大小写规则,将Unicode字符的值转换为其小写等效项

ToString

将此实例的值转换为其等效的字符串表示

ToUpper

将Unicode字符的值转换为它的大写等效项

ToUpperInvariant

使用固定区域性的大小写规则,将Unicode字符的值转换为其大写等效项

TryParse

将指定字符串的值转换为它的等效Unicode字符

  可以看到Char提供了非常多的实用方法,其中以Is和To开头的比较重要。以Is开头的方法大多是判断Unicode字符是否为某个类别,以To开头的方法主要是转换为其他Unicode字符。

例001  Char类的使用

创建一个控制台应用程序,演示如何使用Char类提供的常见方法,代码如下。

转义字符

C#采用字符“\”作为转义字符。例如,定义一个字符,而这个字符是单引号,如果不使用转义字符,则会产生错误。

转义字符就相当于一个电源变换器,电源变换器就是通过一定的手段获得所需的电源形式,例如交流变成直流、高电压变为低电压、低频变为高频等。转义字符也是,它是将字符转换成另一种操作形式,或是将无法一起使用的字符进行组合。

注意:

转义符\(单个反斜杠)只针对后面紧跟着的单个字符进行操作。

 static void Main(string[] args)

 {

     char a = 'a';                                                            //声明字符a

     char b = '';                                                            //声明字符b

     char c = 'L';                                                            //声明字符c

     char d = '.';                                                             //声明字符d

     char e = '|';                                                             //声明字符e

     char f = ' ';                                                             //声明字符f

     //使用IsLetter方法判断a是否为字母

     Console.WriteLine("IsLetter方法判断a是否为字母:{0}", Char.IsLetter(a));

     //使用IsDigit方法判断b是否为数字

     Console.WriteLine("IsDigit方法判断b是否为数字:{0}", Char.IsDigit(b));

     //使用IsLetterOrDigit方法判断c是否为字母或数字

     Console.WriteLine("IsLetterOrDigit方法判断c是否为字母或数字:{0}", Char.IsLetterOrDigit(c));

     //使用IsLower方法判断a是否为小写字母

     Console.WriteLine("IsLower方法判断a是否为小写字母:{0}", Char.IsLower(a));

     //使用IsUpper方法判断c是否为大写字母

     Console.WriteLine("IsUpper方法判断c是否为大写字母:{0}", Char.IsUpper(c));

     //使用IsPunctuation方法判断d是否为标点符号

     Console.WriteLine("IsPunctuation方法判断d是否为标点符号:{0}", Char.IsPunctuation(d));

     //使用IsSeparator方法判断e是否为分隔符

     Console.WriteLine("IsSeparator方法判断e是否为分隔符:{0}", Char.IsSeparator(e));

     //使用IsWhiteSpace方法判断f是否为空白

     Console.WriteLine("IsWhiteSpace方法判断f是否为空白:{0}", Char.IsWhiteSpace(f));

     Console.ReadLine();

 }

说明:大多数重要的正则表达式语言运算符都是非转义的单个字符。转义符\(单个反斜杠)通知正则表达式分析器反斜杠后面的字符不是运算符。例如,分析器将r视为字符,而将后跟r的反斜杠(\r)视为回车功能。

为了避免转义序列元素转义,可以通过以下两种方式避免。

1、  通过@符实现。

2、  通过逐字指定字符串字面值(两个反斜杠)实现。

字符串:

首先理解string,String,StringBuilder的概念和区别:

  string

  string,msdn给出的解释就是,string 是C#中的关键字,并且是引用类型, string 类型表示零或更多 Unicode 字符组成的序列。string 是 .NET Framework 中 String 的别名。但定义相等运算符(== 和 !=)是为了比较 string 对象(而不是引用)的值(后面给出示例解释这点)。

  String:

  String是类,表示文本,即一系列 Unicode 字符。String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。如:当我们实例化一个String的对象后,在内存中为此对象分配一个空间。如下:String str = “hello”;当我们修改str的值的时候,如:str = “hello world”;此时,系统会为str重新分配一个空间。这样原来的内存空间就被浪费掉了,只能等待垃圾回收器回收。在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵。

  String与string的区别:

  string 是 .NET Framework 中 String 的别名,string是C#基元类型(primitive),简单来说就是编译器直接支持的数据类型。基元类型要直接映射到Framework类库(FCL)中的类型,例如,C#中一个基元类型int直接映射到System.Int32类型,这里int是基元类型,System.Int32是FCL类型。而String是FCL类型的,所以在C#的编译时,会自动的把string转化为System.String。所以string与String实质上没什么区别,只是在使用string要做一次转换,转换为String。因此,在编码时我们推荐使用String。

  string虽然为引用类型,但是(== 和 !=)是为了比较 string 对象(而不是引用)的值。

概述:

使用string类时,表面来看能够修改字符串的所有方法实际上并不能修改,实际上它们返回一个根据所调用的方法修改的新的string对象,如果要修改string字符串的实际内容,可以使用StringBuilder类。

各种字符串操作方法:

  1. 比较:

  (1)Compare:

      Int Compare(string strA,string sreB)

      Int Compare(string strA,string sreB,bool ingorCase)

      注:ingorCase若为true那么就忽略大小写。

      返回值:一个32位有符号的整数。

  (2)CompareTo:

      (以实例对象本身与指定的字符串作比较)

      public int CompareTo(string strB)

      返回值:一个32位有符号的整数。

  (3)Equals

      public bool Equals(string value)

      public static bool Equals(string a,string b)

  2.格式化字符串

      public static string Format(string format,object obj)

      format:指定的格式

      obj:被格式化的对象

格式字符

关联属性/说明

d

ShortDatePattern

D

LongDatePattern

f

完整日期和时间(长日期和短时间)

F

FullDateTimePattern(长日期和长时间)

g

常规(短日期和短时间)

G

常规(短日期和长时间)

m、M

MonthDayPattern

r、R

FC1123Pattern

s

使用当地时间的

t

ShortTimePattern

T

LongTimePattern

u

UniversalSortableDateTimePattern

U

使用通用时间的完整日期和时间(长日期和长时间)

y、Y

YearMonthPattern

  3.截取字符串

    public string Substring(int startIndex,int length)

    startIndex:子字符串起始位置的索引

    length:子字符串中的字符数

  4.分割字符串

  public string[] split(params char[] separator);

  separator:一个数组包含分隔符

   返回值:一个数组,其元素包含此实例中的子字符串,这些字符串由separator中的一个或多个字符分隔。

  5.插入和填充字符串

    插入字符串:

      public string Insert(int startIndex, string value);

    填充字符串:

      public string PadLeft(int totalWidth,char paddingChar);

      totalWidth:结果字符串中的字符数,等于原始字符数加上任何其他填充字符

      paddingChar:填充字符

      返回值左对齐

      public string PadRight(int totalWidth,char paddingChar);

      返回值右对齐

    复制字符串:

      Copy:public static string Copy(string str);

      CopyTo:public void CopyTo(int sourceIndex,char[ ]destination,int destinationIndex,int count);

      sourceIndex:需要复制字符串的起始位置

      destination:目标字符数组

      destinationIndex:指定目标数组中的开始存放位置

      count:指定要复制的字符个数

    替换字符串:

      public string Replace(char Ochar,char NChar);

      public string Replace(string Ovalue,string NValue);

      Ochar:待替换的字符

      Nchar替换后的新字符

    删除字符串:

      public string Remove(int startIndex);

      public string Remove (int startIndex,int count);

    可变字符串:

      public StringBuilder();

      public StringBuilder(int capacity);

      public StringBuilder(string value);

      public StringBuilder(int capacity,int maxCapacity);

      public StringBuilder(string value,int capacity);

      public StringBuilder(string value,int startIndex,int length,int capacity);

      capacity: StringBuilder对象的建议起止大小

      value:字符串,包含用于初始化StringBuilder对象的子字符串

      maxCapacity:当前字符串可包含的最大字符数

      startIndex:起始位置

      length:字符串中的字符数

1、         Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。

2、         AppendFormat 方法将文本添加到 StringBuilder 的结尾处,而且实现了 IFormattable 接口,因此可接受格式化部分中描述的标准格式字符串。

3、         Insert 方法将字符串或对象添加到当前 StringBuilder 中的指定位置。

4、         可以使用 Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。

5、         使用 Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。