c# 字符串操作的小技巧
来源:互联网 发布:国际财经公布数据 编辑:程序博客网 时间:2024/05/09 00:23
http://www.cnblogs.com/fgynew/archive/2011/01/16/1936756.html
字符串是由类定义的,如下
1
public
sealed
class
String : IComparable, ICloneable, IConvertible, IComparable<
string
>, IEnumerable<
char
>, IEnumerable, IEquatable<
string
>
注意它从接口IEnumerable<char>派生,那么如果想得到所有单个字符,那就简单了,
1
List<
char
> chars = s.ToList();
如果要对字符串进行统计,那也很简单:
1
int
cn = s.Count(itm => itm.Equals(
'{'
));
如果要对字符串反转,如下:
1
new
string
(s.Reverse().ToArray());
如果对字符串遍历,那么使用扩展方法ForEach就可以了。
现在有一个需求 ,对一个list的字符串,我想对满足某些条件的进行替换,不满足条件的保留下来。问题来了,在forach的时候不能对字符串本身修改。因为msdn有如下的描述:
A String object is called immutable (read-only) because its value cannot be modified once it has been created. Methods that appear to modify a String object actually return a new String object that contains the modification.
所以如下代码其实是构造了两个字符串:
1
string
st =
"Hello,world"
;
2
st =
"Hello,world2"
;
回到那个问题,我想一个很简单的方法是先构造一个List<string>,然后对原字符串遍历 ,满足条件的修改后加入新的list,不满足的直接加入。这种方法很简单原始,效率也是最高的。Linq里面有UNION这个关键字,sql里面也有UNION这个集合操作,那么把它拿来解决这个问题如下:
01
private
List<String> StringCleanUp(List<
string
> input)
02
{
03
Regex reg =
new
Regex(
@"/<(/w+)/>(/w+?)/<//1/>"
, RegexOptions.Singleline);
04
05
var matchItem = (
06
from c
in
input
07
where reg.IsMatch(c)
08
select reg.Replace(c, matchEvaluator)
09
).Union(
10
from c
in
input
11
where !reg.IsMatch(c)
12
select c
13
);
14
15
return
matchItem.ToList<
string
>();
16
}
17
18
private
string
matchEvaluator(Match m)
19
{
20
return
m.Groups[2].Value;
21
}
以上是用正则表达式进行匹配,如果匹配,用匹配的组2的信息替换原信息。如果不匹配,使用原字符串。
如果问题敬请指出。
- c# 字符串操作的小技巧
- mysql 字符串操作小技巧
- c#常用操作小技巧
- 数据库连接字符串的小技巧
- C#字符串的操作
- C#字符串的操作
- 位操作的小技巧
- Vim的操作小技巧
- VB编程的一些小技巧 - 关于vb字符串操作的优化
- C#中使用指针实现高效比较字符串的小技巧
- C#中使用指针实现高效比较字符串的小技巧
- 小技巧----java中字符串的截取
- (小技巧八)计算字符串的长度
- 格式化字符串函数的一些小技巧
- 日期时间字符串的改写小技巧
- 5.Swift 字符串的小技巧
- 关于字符串参数传递的小技巧
- 小技巧:cin输入字符串的总结
- SqlBulkCopy高效写入数据库Demo
- Windows下通过VC++6.0编译live555工程(可调试)
- C/C++调用Java
- 关于C#的索引一点认识
- 一个页面有多个form需要用js提交的通用方法
- c# 字符串操作的小技巧
- 项目中由于mail送信部分要求使用C实现
- CSDN,火端来了
- XP下asp.net用户的设置问题
- Tornado2.0下用CF卡作启动盘的详细步骤
- 绝大多数新技术的学习,都是浪费生命
- 可变参数
- 改lwfw轻量级防火墙,2.6.28上运行
- 奇怪的文化:服务业就是骗子行业(转-shyleoking)