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 对象内的字符。

C#中字符和字符串总结的更多相关文章

  1. C语言中字符型和字符串型的区别?

    C语言中只有字符型类型,没有字符串型类型.字符类型用一个带符号的8位二进制编码表示,其性质与int相同,只是只有一个字节.表示字符的ASCII编码使用其中的0~127,所以要明白字符类型(char)其 ...

  2. Pascal 语言中字符与字符串

    [题目]输入一段文章(255个字符以内),求文章中单词的个数,相同单词只记一次,The 和 the 视作相同. [敲代码] //网友代码 var article,w:string; arr:array ...

  3. 字符和字符串在Java中的旅程

    以下是个人对java中字符和字符串的见解,如有疏漏之处,还请不吝赐教. 下面通过一个简单的程序来说明字符和字符串在Java中的旅程. 以字符 ' 中 '为例, 它的GBK编码是2个字节:0xd6d0, ...

  4. c语言中的部分字符串和字符函数

    // // main.c // homeWork1230 // // #include <stdio.h> #include <string.h> #include <c ...

  5. C语言中的字符和字符串

    C语言在中常常出现字符和字符串,而一串字符或者字符串其实就是数组 字符数组的定义 char arr[]={'h','e','l','l','o','\0'}; 而定义字符串: char arr1[]= ...

  6. C语言strchr()函数:查找某字符在字符串中首次出现的位置

    头文件:#include <string.h> strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:    char * strchr (const char *str, ...

  7. php--某个字符在字符串中的位置比较

    <?php $haystack = 'helloe'; $needle = 'e'; $pos = stripos($haystack, $needle); echo "\n" ...

  8. 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...

  9. 查找常用字符(给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。)

    给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表. 例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 ...

随机推荐

  1. FZU 1061 矩阵连乘

    用栈来算一算就可以了. #include<iostream> #include<algorithm> #include<cstdio> #include<cs ...

  2. IOS开发之IOS8.0最新UIAlertController 分类: ios技术 2015-01-20 14:24 144人阅读 评论(1) 收藏

    最近苹果更新的IOS8 对以前进行了很大的修改, 更新的API也让人捉急,据说iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.比如全新的UIPrese ...

  3. linux平台很nice的工具

    htop工具 这个是top的升级版,查看进程.内存.CPU等性能的工具,主要是界面很人性化.

  4. collectionviewcell 添加删除按钮 响应区域的问题

    在collectionviewcell 的右上角添加了一个删除按钮,但是发现只有cell和删除按钮重合的区域才会响应点击事件 后来doctor 李说这是iOS 事件响应链的机制(http://www. ...

  5. Ubuntu14.04 64bit编译u-boot-2016.07提示 Your dtc is too old, please upgrade to dtc 1.4 or newer

    Author:AP0904225版权声明:本文为博主原创文章,转载请标明出处. Ubuntu14.04 64bit环境下编译u-boot-2016.07提示如下错误: CHK include/conf ...

  6. Bzoj3473

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3473 题解:待更 代码:待更 开始时间: 结束时间:

  7. iOS 之 时间格式与字符串转换

    这个知识点涉及到三个类:NSDate.NSString,另外是一个最重要的类NSDateFormatter.它起到格式转换的作用,至于方法查看头文件就好了.时间格式注意下:yyyyMMddHHmmss

  8. Lamp环境下设置绑定apache域名

    先进入apache配置目录 [root@iZ233vkrtsiZ local]# cd /usr/local/apache/conf/vhost 然后找到自己网站的配置.以本站为例 [root@iZ2 ...

  9. NGINX location 配置

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进 ...

  10. Angular - - $interval 和 $timeout

    $interval window.setInterval的Angular包装形式.Fn是每次延迟时间后被执行的函数. 间隔函数的返回值是一个承诺.这个承诺将在每个间隔刻度被通知,并且到达规定迭代次数后 ...