CLR(字符、字符串和文本处理)

2 篇文章 0 订阅

使用三种技术实现各种数值类型与Char实例的相互转换

转型(强制类型转换)

使用Convert类型

使用IConvertible接口


在任何应用程序中,System.String都是用得最多的类型之一。一个String代表一个不可变(immutable,一经创建,字符串便不能以任何方式修改)的顺序字符集。String类型直接派生自Object,所以它是一个引用类型。因此,String对象(它的字符数组)总是存在于堆上,永远不会跑到线程栈。

//三个文本常量字符串连接成一个文本常量字符串
String s="Hi" + " " + "there.";
在上述代码中,由于所有字符串都是文本常量字符串,所以C#编译器会在 编译时连接它们,最终会将一个字符串放到模块的元数据中。对非文本常量字符串使用+操作符,连接则会在 运行时进行。

若要在运行时将几个字符串连接到一起,请避免使用+操作符,因为它会在堆上创建多个字符串对象,而堆是需要垃圾回收的,从而影响到性能。应尽量使用System.Text.StringBuilder类型。


逐字字符串字符@

//指定应用程序路径
String file="C;\\Windows\\System32\\Notepad.exe";

//使用逐字字符串来指定应用程序路径
String file=@"C:\Windows\System32\Notepad.exe";

字符串是不可变的

String对象最重要的一个事实是,它是不可变的(immutable)。也就是说,字符串一经创建便不能更改,不能变长、变短或修改其中的任何字符。


字符串留用虽然有用,但使用时必须谨慎。

字符串池仍是提升字符串性能的一种有效的方式。


高效率构造字符串

StringBuilder sb=new StringBuilder();
StringBuilder代表的是一个 可变的(mutable)字符串。也就是说,StringBuilder的大多数成员都能更改字符数组的内容,同时不会造成在托管堆上分配新对象。

StringBuilder只有以下两种情况才会分配一个新对象。

动态构造一个字符串,它的长度超过了你设置的“容量”。

调用StringBuilder的ToString方法。


为了构造一个字符串,将所有字符串转换成大写,再在其中插入一个子字符串,需要写下面这样的代码:

//构造一个StringBuilder来执行字符串操作
StringBuilder sb = new StringBuilder();

//使用StringBuilder来执行一些字符串操作
sb.AppendFormat("{0} {1}","Yxd","Sxd").Replace(" ","-");

//将StringBuilder转换成String,以便将所有字符转换成大写
String s=sb.ToString().ToUpper();

//清除StringBuilder(分配一个新的Char数组)
sb.Length=0;

//将全部字符大写的String加载到StringBuilder中,执行更多的操作
sb.Append(s).Insert(8,"Marc-");

//将StringBuilder转换回String
s=sb.ToString();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值