当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-10-18

    本文导语:  字符串是由类定义的,如下1 public sealed class String : IComparable, ICloneable, IConvertible, IComparable, IEnumerable, IEnumerable, IEquatable注意它从接口IEnumerable派生,那么如果想得到所有单个字符,那就简单了,1 List chars = s.ToList();如果要对字符...


字符串是由类定义的,如下
1 public sealed class String : IComparable, ICloneable, IConvertible, IComparable, IEnumerable, IEnumerable, IEquatable
注意它从接口IEnumerable派生,那么如果想得到所有单个字符,那就简单了,
1 List 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,然后对原字符串遍历 ,满足条件的修改后加入新的list,不满足的直接加入。这种方法很简单原始,效率也是最高的。Linq里面有UNION这个关键字,sql里面也有UNION这个集合操作,那么把它拿来解决这个问题如下:
代码如下:

   private List StringCleanUp(List input)
         {
             Regex reg = new Regex(@"(w+?)", 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();
         }
  
         private string matchEvaluator(Match m)
         {
             return m.Groups[2].Value;
         }

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

    
 
 

您可能感兴趣的文章:

  • C# Split分隔字符串的应用(C#、split、分隔、字符串)
  • C#实现移除字符串末尾指定字符的方法
  • C#实现中英文混合字符串截取的方法
  • C#生成随机字符串的实例
  • C#随机生成Unicode类型字符串
  • c# split分隔字符串使用方法
  • C#统计字符串里中文汉字个数的方法
  • C#中判断字符串是全角还是半角的实现代码
  • C#实体类转换成Json字符串的实现代码
  • C#实现将千分位字符串转换成数字的方法
  • c#转义字符串中的所有正则特殊字符方法示例
  • c# 截断字符串的实现代码
  • C#中把字符串String转换为整型Int的小例子
  • c#完美截断字符串代码(中文+非中文)
  • 在c#中把字符串转为变量名并获取变量值的小例子
  • c# split分割字符串的例子
  • C# 去除首尾字符或字符串的方法
  • C#实现判断字符串中是否包含中文的方法
  • c#中分割字符串的几种方法
  • C#中判断、验证字符串是否为日期格式的实现代码
  • mysql查询字符串替换语句小结(数据库字符串替换)
  • Java实现字符串倒序输出的常用方法小结
  • JAVA中字符串函数subString的用法小结
  • C#几种截取字符串的方法小结
  • C#中使用split分割字符串的几种方法小结
  • Bash Shell字符串操作小结
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Strings(字符串) 成员 size():返回字符串中字符的数量
  • 关于字符串的操作,我想得到字符串的长度,和他开始两位组成的新的字符串,例如::
  • C++ Strings(字符串) 成员 c_str():将字符串以C字符数组的形式返回
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • C++ Strings(字符串) 成员 find():在字符串中查找字符
  • 如何使GDB显示完整的字符串变量,当字符串比较长时。
  • C++ Strings(字符串) 成员 end():返回一个迭代器,指向字符串的末尾。(最后一个字符的下一个位置)
  • php判断字符串在另一个字符串位置的方法
  • C++ Strings(字符串) 成员 empty():如果字符串为空,返回真
  • 请教,有关16进制字符串形成2进制字符串的问题!
  • C++ Strings(字符串) 成员 length():返回字符串的长度
  • 如何将一个双引号”放在一个字符串中,就是在字符串中如何转义一个双引号。谢谢!
  • C++ Strings(字符串) 成员 resize():重新设置字符串的大小
  • shell程序:在大文件中查找特定字符串,但该字符串可以跨行
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 怎样判断一个字符串在另一个字符串里面?
  • C++ Strings(字符串) 成员 reserve():保留一定容量以容纳字符串(设置capacity值)
  • 请问怎样从键盘读入一个字符串,怎样连接两个字符串,谢谢
  • C++ Strings(字符串) 成员 swap():交换两个字符串的内容
  • 浅析string类字符串和C风格字符串之间的区别
  • C++ Strings(字符串) 成员 rbegin():返回一个逆向迭代器,指向最后一个字符
  • 如何用shell实现将指定文件中的指定的字符串替换为我指定的另外的字符串
  • C++ Strings(字符串) 成员 insert():插入字符
  • 在JAVA中如何实现在一个长字符串查找某个字符串??
  • Linux c字符串中不可打印字符转换成16进制
  • 如何用sha1sum获取一个字符串使用sha-1加密后的16进制字符串?
  • C++ Strings(字符串) 成员 find_first_of():查找第一个与value中的某值相等的字符
  • 在SQL中获取一个长字符串中某个字符串出现次数的实现方法
  • C++ Strings(字符串) 成员 find_last_of():查找最后一个与value中的某值相等的字符
  • 去除字符串中的相同的字符串的sql函数
  • C++ Strings(字符串) 成员 get_allocator():返回配置器


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3