c#对字符串操作的技巧小结
c# 操作 技巧 字符串 小结
2023-06-13 09:14:49 时间
字符串是由类定义的,如下
1publicsealedclassString:IComparable,ICloneable,IConvertible,IComparable<string>,IEnumerable<char>,IEnumerable,IEquatable<string>
注意它从接口IEnumerable<char>派生,那么如果想得到所有单个字符,那就简单了,
1List<char>chars=s.ToList();
如果要对字符串进行统计,那也很简单:
1intcn=s.Count(itm=>itm.Equals("{"));
如果要对字符串反转,如下:
1newstring(s.Reverse().ToArray());
如果对字符串遍历,那么使用扩展方法ForEach就可以了。
现在有一个需求,对一个list的字符串,我想对满足某些条件的进行替换,不满足条件的保留下来。问题来了,在forach的时候不能对字符串本身修改。因为msdn有如下的描述:
AStringobjectiscalledimmutable(read-only)becauseitsvaluecannotbemodifiedonceithasbeencreated.MethodsthatappeartomodifyaStringobjectactuallyreturnanewStringobjectthatcontainsthemodification.
所以如下代码其实是构造了两个字符串:
1stringst="Hello,world";
2st="Hello,world2";
回到那个问题,我想一个很简单的方法是先构造一个List<string>,然后对原字符串遍历,满足条件的修改后加入新的list,不满足的直接加入。这种方法很简单原始,效率也是最高的。Linq里面有UNION这个关键字,sql里面也有UNION这个集合操作,那么把它拿来解决这个问题如下:
复制代码代码如下:
1publicsealedclassString:IComparable,ICloneable,IConvertible,IComparable<string>,IEnumerable<char>,IEnumerable,IEquatable<string>
注意它从接口IEnumerable<char>派生,那么如果想得到所有单个字符,那就简单了,
1List<char>chars=s.ToList();
如果要对字符串进行统计,那也很简单:
1intcn=s.Count(itm=>itm.Equals("{"));
如果要对字符串反转,如下:
1newstring(s.Reverse().ToArray());
如果对字符串遍历,那么使用扩展方法ForEach就可以了。
现在有一个需求,对一个list的字符串,我想对满足某些条件的进行替换,不满足条件的保留下来。问题来了,在forach的时候不能对字符串本身修改。因为msdn有如下的描述:
AStringobjectiscalledimmutable(read-only)becauseitsvaluecannotbemodifiedonceithasbeencreated.MethodsthatappeartomodifyaStringobjectactuallyreturnanewStringobjectthatcontainsthemodification.
所以如下代码其实是构造了两个字符串:
1stringst="Hello,world";
2st="Hello,world2";
回到那个问题,我想一个很简单的方法是先构造一个List<string>,然后对原字符串遍历,满足条件的修改后加入新的list,不满足的直接加入。这种方法很简单原始,效率也是最高的。Linq里面有UNION这个关键字,sql里面也有UNION这个集合操作,那么把它拿来解决这个问题如下:
privateList<String>StringCleanUp(List<string>input)
{
Regexreg=newRegex(@"\<(\w+)\>(\w+?)\</\1\>",RegexOptions.Singleline);
varmatchItem=(
fromcininput
wherereg.IsMatch(c)
selectreg.Replace(c,matchEvaluator)
).Union(
fromcininput
where!reg.IsMatch(c)
selectc
);
returnmatchItem.ToList<string>();
}
privatestringmatchEvaluator(Matchm)
{
returnm.Groups[2].Value;
}
以上是用正则表达式进行匹配,如果匹配,用匹配的组2的信息替换原信息。如果不匹配,使用原字符串。
如果问题敬请指出。
相关文章
- mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…
- 2019-10-30-C#-dotnet-core-局域网组播方法「建议收藏」
- C#中泛型类和扩展方法如何使用案例分享
- C# 中类与继承等概念
- C#应用Newtonsoft.Json操作json详解编程语言
- C与MSSQL数据库连接实现快速数据操作(c# mssql 连接)
- 用C#对ADO.NET数据库完成简单操作的方法
- 一个事半功倍的c#方法动态注册按钮事件
- c#循环中产生伪随机数
- C#Winform调用系统接口操作INI配置文件的代码
- C#对文件与文件夹的操作包括删除、移动与复制
- C#根据ip获取城市等相关信息
- C#打印出正等腰三角形实例代码
- C#中将ListView中数据导出到Excel的实例方法
- 基于C#MBG扩展方法类库的使用详解
- c#转换全角半角方法示例
- c#连接access数据库操作类分享
- c#使用filesystemwatcher实时监控文件目录的添加和删除
- c#文件助手类分享(读取文件内容操作日志文件)
- jquery+ajax+C#实现无刷新操作数据库数据的简单实例
- c#操作xml文件示例
- c#异步task示例分享(异步操作)
- C#批量更新sql实例
- C#中foreach原理以及模拟的实现
- C#中使用ADOMD.NET查询多维数据集的实现方法
- C#中DataGridView操作技巧
- c#实现的操作oracle通用类
- MongoDB入门教程之C#驱动操作实例