A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李奔 中级黑马   /  2013-6-10 00:58  /  2960 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李奔 于 2013-6-11 21:14 编辑

题目具体要求:
      123-456---789-----123-2把类似的字符串中重复符号去掉,既得到123-456-789-123-2
请大家好好想想,最好不要百度、google,挺不错的!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

16 个回复

倒序浏览
为什么不使用正则表达式,题中又没有说不能使用正则表达式,
回复 使用道具 举报
最开始也想到用正则,但是后来发现,即使用正则,貌似还是一样的。。
  1. static void Main(string[] args)
  2.         {

  3.             string a = Console.ReadLine();      
  4.             char[] s={'-'};
  5.             string sumString="";
  6.             string[] b = a.Split(s, StringSplitOptions.RemoveEmptyEntries);                 //将字符串按“-”分割,剔除空白,存入数组。

  7.             for (int i = 0; i < b.Length; i++) {
  8.                 if (i != b.Length - 1)          //判断是否为最后一个。如果不是,就在数组后加“-”
  9.                 {
  10.                     sumString += b[i] + s[0];
  11.                 }
  12.                 else                                //如果是,不加“-”
  13.                 {
  14.                     sumString += b[i];
  15.                 }
  16.             }
  17.             Console.WriteLine(sumString);
  18.              Console.ReadKey();

  19.         }
复制代码
C#还算简单

点评

不错,学习了!  发表于 2013-6-10 10:07

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 关关雎鸠 于 2013-6-10 10:11 编辑

正则感觉还是比较难得理解。。我等不喜欢用,有时间再琢磨
我还是以分隔字符串,以“-”分隔,再添加“-”就成了,呵呵~

  1. <P>static void Main(string[] args) {
  2.             //123-456---789-----123-2把类似的字符串中重复符号去掉,既得到123-456-789-123-2
  3.             string strs = "123-456---789-----123-2";
  4.             string str = string.Empty;

  5.             string[] charSet = strs.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
  6.             for (int i = 0; i< charSet.Length; i++) {
  7.                 if (i < charSet.Length - 1) {
  8.                     str += charSet[i] + "-";
  9.                     continue;
  10.                 }
  11.                 str += charSet[i];
  12.             }
  13.             Console.WriteLine(str);
  14.             Console.ReadKey();
  15.         }</P>
  16. <P> </P>
  17. <P> </P>
  18. <P> </P>
复制代码

1.png (9.55 KB, 下载次数: 0)

1.png

点评

我觉得 , 可以学学正则表达式,用正则表达式只是一句话而已!! str = Regex.Replace(str,@"(\-)+","-"); 呵呵  发表于 2013-6-11 23:57

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
靠,有事去了,居然被占了个先。。。

呵呵,思路一样
回复 使用道具 举报
关关雎鸠 发表于 2013-6-10 10:13
靠,有事去了,居然被占了个先。。。

呵呵,思路一样

谢谢参与,不过还需要更完善一点。
你注意到“把类似的字符串中重复符号去掉”了吗?
如果我输入"787%%--87%%--$$",怎么办?
回复 使用道具 举报
关关雎鸠 发表于 2013-6-10 10:09
正则感觉还是比较难得理解。。我等不喜欢用,有时间再琢磨
我还是以分隔字符串,以“-”分隔,再添加“-” ...

思路好。。。强大。。。喜欢这方法
回复 使用道具 举报
haxyek 金牌黑马 2013-6-10 11:02:22
8#
李奔 发表于 2013-6-10 10:26
谢谢参与,不过还需要更完善一点。
你注意到“把类似的字符串中重复符号去掉”了吗?
如果我输入"787%%-- ...

只要在这个char的数组里声明出来要过滤那些字符即可;
char[] s={'-','%'};

点评

谢谢参与!  发表于 2013-6-10 12:18
回复 使用道具 举报
楼上正解~
回复 使用道具 举报
除了以上两种思路,大家还有没有其他的?
回复 使用道具 举报
大家做的都不错!
把我的也附上吧!
  1. //设置标识位
  2. char fuhao = '@';
  3. Console.WriteLine("请输入一串字符串,可以输入多个连续的符号");
  4. //接受输入的字符串
  5. String strInput=Console.ReadLine();
  6. //遍历每一个字符
  7. for (int i = 0; i < strInput.Length; i++)
  8. {
  9. //检索出每个字符
  10. char ele = strInput.ElementAt(i);
  11. //字符是否为数字型判断
  12. if (ele >= '0' && ele <= '9')
  13. {
  14. //为标识位赋值
  15. fuhao = '@';
  16. Console.Write(ele);
  17. }
  18. else
  19. {
  20. if (ele != fuhao)
  21. {
  22. Console.Write(ele);
  23. }
  24. fuhao = ele;
  25. }
  26. }
  27. Console.ReadKey();
复制代码
回复 使用道具 举报
我觉得还是用正则表达式吧   很简单的!!那么我也把我的附上吧!!  和大家一起学习!!

  1. class Program
  2. {
  3.    /*
  4.       5、 123-456---789-----123-2把类似的字符串
  5.     中重复符号去掉,既得到123-456-789-123-2
  6. */
  7. static void Main(string[] args)
  8.     {
  9.       //定义字符串
  10.        string str = "123-456---789-----123-2";
  11.       Console.WriteLine("操作前:{0}",str);

  12.       //使用正则表达式,把多个“-”替换为一个“-”
  13.       str = Regex.Replace(str,@"(\-)+","-");
  14.       Console.WriteLine("操作后:{0}", str);

  15.       Console.ReadKey();
  16.     }
  17. }
复制代码
回复 使用道具 举报
string STRING = "123-456---789-----123-2";
            //定义一个char数组来存放-
            char[] cr={'-'};
            string S="";
            //分割文本
            string[] b = STRING.Split(cr , StringSplitOptions.RemoveEmptyEntries);   
            
            for (int i = 0; i < b.Length; i++) {
                if (i != b.Length - 1)         
                {
                        S += b[i] + cr [0];
                }
                else                              
                {
                    S += b[i];
                }
            }
            Console.WriteLine(S);
             Console.ReadKey();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马