黑马程序员技术交流社区

标题: 字符串处理问题 [打印本页]

作者: chankamlam    时间: 2013-5-22 10:18
标题: 字符串处理问题
如何将--123-456---789-----123-2把类似的字符串中重复符号去掉,得到123-456-789-123-2
作者: 秦二江    时间: 2013-5-22 10:42
string str = "123-456---789-----123-2";
            // 用‘-’来分割字符串,并去掉分割后数组中的‘-’
            string[] strs = str.Split(new char [] {'-'},StringSplitOptions.RemoveEmptyEntries);
            // 定义一个变量,用来接收新拼接起来的字符串
            string newStr = null;
            // 遍历数组中的元素
            for (int i = 0; i < strs.Length;i++ )
            {
               // 如果是 数组中最后一个元素 则 不加‘-’
                if(i==strs.Length-1)
                {
                    newStr += strs[i];
                }
                else
                {
                    // 其他拼接都加‘-’
                newStr += strs[i] + '-';
                }
            }
            Console.WriteLine("原字符串为:123-456---789-----123-2");
            Console.WriteLine("去重复符号后:");
            Console.WriteLine(newStr);


            Console.ReadKey();
作者: 曾大鹏    时间: 2013-5-22 11:30
用正则表达式替换 很快的
  1. //123-456---789-----123-2把类似的字符串中重复符号去掉,既得到123-456-789-123-2
  2.         static void Main(string[] args)
  3.         {
  4.             string str = "123-456---789-----123-2";
  5.             //使用正则表达式替换字符串 把连续的-替换成一个-
  6.             str = Regex.Replace(str, @"\-+", "-");
  7.             Console.WriteLine(str);
  8.             Console.ReadKey();
  9.         }
复制代码

作者: chankamlam    时间: 2013-5-22 11:49
谢谢,楼上,如果字符串是---123-4---56---789-----123-2,就会出错。
作者: 魏庆君    时间: 2013-5-22 12:28
  1. string s = "--123-456---789-----123-2";
  2.             string[] s1 = s.Split(new char[]{'-'},StringSplitOptions.RemoveEmptyEntries);
  3.             s = string.Join("-",s1);
  4.             Console.WriteLine(s);
  5.             Console.ReadKey();
复制代码

作者: 秦二江    时间: 2013-5-22 12:31
曾大鹏 发表于 2013-5-22 11:30
用正则表达式替换 很快的

这代码,带劲,我喜欢
作者: chankamlam    时间: 2013-5-22 12:50
魏庆君 发表于 2013-5-22 12:28

谢谢,楼上




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2