欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

c#对字符串操作的技巧小结

时间:2022-06-18 12:39:10|栏目:.NET代码|点击:

字符串是由类定义的,如下
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这个集合操作,那么把它拿来解决这个问题如下:
复制代码 代码如下:

   private List<String> StringCleanUp(List<string> input)
         {
             Regex reg = new Regex(@"\<(\w+)\>(\w+?)\</\1\>", RegexOptions.Singleline);
  
             var matchItem = (
                     from c in input
                     where reg.IsMatch(c)
                     select reg.Replace(c, matchEvaluator)
                 ).Union(
                     from c in input
                     where !reg.IsMatch(c)
                     select c
                 );
  
             return matchItem.ToList<string>();
         }
  
         private string matchEvaluator(Match m)
         {
             return m.Groups[2].Value;
         }

以上是用正则表达式进行匹配,如果匹配,用匹配的组2的信息替换原信息。如果不匹配,使用原字符串。
如果问题敬请指出。

上一篇:C#表达式树Expression动态创建表达式

栏    目:.NET代码

下一篇:C# SMTP发送邮件的示例

本文标题:c#对字符串操作的技巧小结

本文地址:http://www.codeinn.net/misctech/205212.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有