C#学习笔记(3)

第四节:C#字符与字符串

1、Char类

C#中的char 类型作用比较单一,只能用来表示表示单个字符,外包单引号。而且不同于C,char 类型不能由整型数隐式转换。比如C中:

Char b=97;(sensible)

而C#中:

Char b=97;(Error)

这样看来,char类型在C#未免有些死板,用处有限。

2、String类

C#中的String类是命名空间自带的类型,不需要像C++那样包含头文件“string“,其他的用法和C++中的类似。但需要初始化后再使用,否则会报出”使用了未赋值的变量“。

如C++中:

string s;

s+=”123”;(sensible)

而C#中:

String s;

s+=”123”;(error)

3、字符串比较

C#中的字符串比较除了==外,主要还用compare(),compareto()和Equals()等方法,这些方法都属于string类。

Compare方法是string类的静态方法,所以可以直接类名引用。

如:String.Compare(str1,str2);

而CompareTo是对象方法,是以实例对象本身与指定的字符串比较,范式如:

Str1.CompareTo(str2);

Equals()即可以是类方法也是对象方法,所以以下都是无误的:

Str1.Equals(str2);

String.Equals(str1,str2);

4、格式化字符串

C#中提供了一个静态的Format方法,用于将字符串数据格式化成指定的格式。

Format参数由零或多个文本序列与零或多个索引占位符混合组成,其中索引占位符称为格式项,它们与此方法的参数列表中的对象相对应。格式设置过程将每个格式项替换为相应对象值的文本表示形式。格式项的语法是{索引[,对齐方式][:格式字符串]},它指定了一个强制索引、格式化文本的可选长度和对齐方式,以及格式说明符字符的可选字符串,其中格式说明符字符用于控制如何设置相应对象的值的格式。

在实际开发中,C#支持的标准数据格式更多样:

C或c

货币

货币值

¥123或-¥123.456

D或d

Decimal

整型数,可负

1234或-001234

E或e

科学计数法

科学计数法

1.052E+03或-1.05e-03

P或p

百分比

百分数

100.00%或100%

X或x

十六进制

十六进制字符串

FF或00ff

此外C#为不同地区做了地方化处理,比如可以按照中文习惯将日期表示为不同格式,这里列举两种:

d  简短日期格式:YYYY-MM-dd

D 完整日期格式:YYYY年MM月dd日

5、字符串分割

String类提供了一个Split方法,用于分割字符串,返回包含所有子串的字符串数组。不同于Python的split,C#的split分割参数为字符数组,即char[]。示例如下:

 

6、StringBuilder类

既然已经有了String类,StringBuilder类是如何产生的呢?对于已经成功创建的字符串对象,他的长度是固定的,内容不能被改变和编译。虽然能用+运算符附加新字符或字符串,但“+“会产生一个新的String实例,会在内存中创建一个新的字符串对象。如果重复地对字符串进行修改,会极大地增加系统开销。因此C#提供了一个可变的字符序列StringBuilder类,从而大大提高了频繁增加字符串地效率。

StringBuilder类存在于System.Text命名空间中。

StringBuilder最常用的构造方法如;

StringBuilder Str=new StringBuilder(“Hello world!”);

StringBuilder类常用的方法有:

Append() 将文本或字符串加入到对象末尾。

AppendFormat() 自定义变量格式并加到末尾。

Insert() 插入字符串或对象到指定位置。

Remove() 从对象中移除指定数目字符。

Replace() 用另一个字符或串来替代StringBuilder对象内的字符。

我们可以用一段代码来检验String和StringBuilder的效率。

可以明显看出两者执行效率上的巨大差距。

 

由于String对象是不可改变的,每次使用String类中的方法时,都要在内存中分配新的空间来创建一个新的字符串对象。在重复修改的情况下,这种开销可能会非常昂贵。所以如果要修改字符串而不创建新对象,可以使用StringBuilder提高性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值