A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘安成 中级黑马   /  2013-12-16 14:24  /  1056 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘安成 于 2013-12-16 18:23 编辑

字符串的常见处理..老是记混淆了...能列举一下吗. 让我加深一下印象.

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

2 个回复

倒序浏览
抢楼个先,我想想啊
回复 使用道具 举报
  对大多数C#程序员来说字符串处理是很常见的工作。
.NET Framework为处理字符串提供了很多的工具,但是必须特别注意,因为有几个陷阱会绊倒初学者。
首先要注意的是在.NET中string是引用类型。
在.NET中引用类型是存放在托管堆中。所以他们被.NET的垃圾回收器管理着。与值类型不同的是,当他们超出范围,他们不会自动销毁。
使用下面的语法字符串可以很简单的被实例化:

string s1;
  

注意string没有默认值。因此在试图访问它之前你需要为string赋值。

string s1;
Literal1.Text = s1; //Will give run-time error 运行错误
 

1 string s2 = " ";
2 Literal1.Text = s2;  //你可以为字符串赋一个空值。
  

在.NET framework中有许多的内置方法可以用来处理字符串。也就是说,字符串是不可变的并且因此原始字符串永远不会改变。
因此如果你需要修改字符串,你需要给他重新分配使用一个新字符串值:


1 string s1 = "all lower case";
2 s1.ToUpper() ; //s1 is unchanged
3 Literal1.Text = s1;  //outputs 'all lower case' since s1 is unchanged
4
5 string s2 = "all lower case";
6 s2 = s2.ToUpper() ; //s2 is now re-assigned the new uppercase string
7 Literal2.Text = s2; //outputs 'ALL LOWER CASE'

  有关字符串不变性的详细请参见字符串是不可变

    字符串连接
     C#为字符串提供了一个方便的连接方法:使用‘+’:

1 string s1 = "Hong ";
2 string s2 = "Kong";
3 Literal1.Text = s1 + s2;
  

虽然这个方法很放便,但它不是有效执行大量串联的的方法。(由于字符串是不可变的,每次的连接结果引用类型在托管堆中都要创建一个额外的字符串。
它会存留在内存中,并且不会自动销毁,直到垃圾收集器将其销毁)

为了避开这个限制.NET Framework提供了StringBuilder类,可以有效地使用它的append()方法来连接字符串:

StringBuilder sb = new StringBuilder();
sb.Append("Hong ");
sb.Append("Kong");
  通过测试,在连接2个字符串的时候不会有任何节省任何内存(实际上这可能会占用更多的内存,因为StringBuilder消耗内存)
一般而言,通常当连接字符串超过4个时应当使用StringBuilder 。
         转义字符
与其他基于C的语言一样,C#字符串可能包含转义字符,应该如何输出,转义字符用/(反斜杠)开始遵循一个特定的字符 。
下面列出的各种转义字符和它们的输出:

\'   插入一个单引号
\“  双引号插入
\ \ 插入一个反斜杠
\a  触发系统警报
\n  插入一个新行(Windows系统)
\ r 插入一个回车
\ t 插入一个水平制表符


逐字字符串
为了保持一个字符串,在字符串的起始地方只需添加一个@符号。
例如:

1 string outputStr =   "This site is named \'C# Help\'  ";
2 Response.Write(outputStr);
  

输出:

1 This site is named 'C# Help'
  

为了输出逐字字符串,在字符串的起始处添加@

1 string outputStr =   @"This site is named \'C# Help\'  ";
2 Response.Write(outputStr);
  

输出:

This site is named \'C# Help\'
  

请注意,空白将保留:

1 string outputStr =   @"This is a                  broken
2 up
3              string";
  

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1 不错继续努力 黑马期待你的加入.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马