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 次,则需要在最终答案中包含该字符 ...
随机推荐
- 《算法导论》习题2.3-5 二分搜索 Binary Search
地球人都知道“二分查找”,方法也非常简单,但是你能不能在10分钟内写出一个没有bug的程序呢? 知易行难,自己动手写一下试一试吧. public class BinarySearch { public ...
- ucos互斥信号量解决优先级反转问题
在可剥夺性的内核中,当任务以独占方式使用共享资源的时候,会出现低优先级任务高于高优先级任务运行的情况,这种情况叫做优先级反转,对于实时操作系统而言,这是一场灾难,下面我们来说说优先级反转的典型环境. ...
- FAB、TextInputLayout及Snackbar笔记
FloatingActionButton 由于FloatingActionButton是重写ImageView的,所有FloatingActionButton拥有ImageView的一切属性. 控制F ...
- UVa 750 - 8 Queens Chess Problem
题目大意:八皇后问题,在一个8*8的棋盘上,放置8个皇后,使得任意两个皇后不在同一行上.不在同一列上.不在同一条对角线上,不过这道题预先给定了一个位置放置一个皇后,让你输出所有可能的答案. 经典的回溯 ...
- Maven deploy时报Fatal error compiling: tools.jar not found错误的问题处理
摘自:http://blog.csdn.net/achilles12345/article/details/19046061 在Eclipse环境下,使用Maven进行deploy时发现报了该错误:F ...
- r.js build.js配置
/* * This is an example build file that demonstrates how to use the build system for * require.js. * ...
- OC强弱引用的使用规则
强弱引用的唯一区别只是体现在对象的消亡上. 当一个对象不再有强引用指向它时,它就会被销毁. 弱引用不持有对象,不计入自动引入计数,所以不用考虑它销毁的问题.
- JS 响应式编程
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script ...
- Delphi遍历文件夹及子文件夹(可查找固定格式文件)
Delphi遍历文件夹及子文件夹 {-------------------------------------------------------------------------------过程名 ...
- Angular Cookies 操作
$cookiesProvider 使用$cookiesProvider改变$cookies服务的默认行为. 默认属性 path:字符串,cookies只在这个路径及其子路径可用.默认情况下,这个将会是 ...