C#中字符和字符串总结
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)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#中字符和字符串总结的更多相关文章
- C语言中字符型和字符串型的区别?
C语言中只有字符型类型,没有字符串型类型.字符类型用一个带符号的8位二进制编码表示,其性质与int相同,只是只有一个字节.表示字符的ASCII编码使用其中的0~127,所以要明白字符类型(char)其 ...
- Pascal 语言中字符与字符串
[题目]输入一段文章(255个字符以内),求文章中单词的个数,相同单词只记一次,The 和 the 视作相同. [敲代码] //网友代码 var article,w:string; arr:array ...
- 字符和字符串在Java中的旅程
以下是个人对java中字符和字符串的见解,如有疏漏之处,还请不吝赐教. 下面通过一个简单的程序来说明字符和字符串在Java中的旅程. 以字符 ' 中 '为例, 它的GBK编码是2个字节:0xd6d0, ...
- c语言中的部分字符串和字符函数
// // main.c // homeWork1230 // // #include <stdio.h> #include <string.h> #include <c ...
- C语言中的字符和字符串
C语言在中常常出现字符和字符串,而一串字符或者字符串其实就是数组 字符数组的定义 char arr[]={'h','e','l','l','o','\0'}; 而定义字符串: char arr1[]= ...
- C语言strchr()函数:查找某字符在字符串中首次出现的位置
头文件:#include <string.h> strchr() 用来查找某字符在字符串中首次出现的位置,其原型为: char * strchr (const char *str, ...
- php--某个字符在字符串中的位置比较
<?php $haystack = 'helloe'; $needle = 'e'; $pos = stripos($haystack, $needle); echo "\n" ...
- 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...
- 查找常用字符(给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。)
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表. 例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 ...
随机推荐
- LPC1788的内部EEPROM使用
Lpc1788内置有eeprom 使用代码 #ifndef __E2PRONINCHIP_H_ #define __E2PROMINCHIP_H #include "common.h&quo ...
- lpc1768usb端点响应以及描述符定义
#ifndef __USBEP1_H_ #define __USBEP1_H_ #include "usb.h" #include "usbhw.h" exte ...
- javascript DOM 学习总结 (1)
摘自javascript DOM编程艺术 1.首先介绍DOM的三个字母的含义: 1.1 D 如果没有document(文档),DOM 也无从谈起,当创建了一个网页并把他加载到web浏览器中时,DOM ...
- Valgrind 快速入门
1. 介绍 Valgrind工具组提供了一套调试与分析错误的工具包,能够帮助你的程序工作的更加准确,更加快速.这些工具之中最有名的是Memcheck.它能够识别很多C或者C++程序中内存相关的错误,这 ...
- Prism之使用EventAggregation进行模块间通信
在开发Silverlight程序的时候,经常需要在不同的组件间进行通信.比如点击一个button,可能就需要改变另一个控件的内容.比较直接的办法是使用事件,当然使用MVVM的时候也可以使用comman ...
- mySql 分段查询
准备: 创建一个成绩表 Create table grade (id integer, score integer); 插入数据(只有id每次加一,score是1到100的随机数,java生成): p ...
- CSS3 :target伪类实现Tab切换效果 BY commy
http://www.shejidaren.com/examples/css3-target/css3-target.html#tab1 标签一 标签二 标签三 欢迎加设计达人Q群:50063010设 ...
- 负载均衡 Lvs DR 模式笔记
先来一张原理图,相当于ip-tun模式把tunl0的那块网卡配置在eth0:0的这个接口上,避免了兼容性的问题
- cygwin下配置alias
主要是cygwin下的盘符映射关系容易忘,直接用mount命令: 所以,找到E:\cygwin64\home\Administrator下面的.bashrc,添加alias.如下:
- Spring mvc配置Json返回
第一种 配置 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHand ...