黑马程序员技术交流社区

标题: 给大家分享一道比较好玩的入学考试题 [打印本页]

作者: 李奔    时间: 2013-6-10 00:58
标题: 给大家分享一道比较好玩的入学考试题
本帖最后由 李奔 于 2013-6-11 21:14 编辑

题目具体要求:
      123-456---789-----123-2把类似的字符串中重复符号去掉,既得到123-456-789-123-2
请大家好好想想,最好不要百度、google,挺不错的!
作者: fcyan86    时间: 2013-6-10 02:41
为什么不使用正则表达式,题中又没有说不能使用正则表达式,

作者: haxyek    时间: 2013-6-10 09:53
最开始也想到用正则,但是后来发现,即使用正则,貌似还是一样的。。
  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:09
本帖最后由 关关雎鸠 于 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

作者: 关关雎鸠    时间: 2013-6-10 10:13
靠,有事去了,居然被占了个先。。。

呵呵,思路一样
作者: 李奔    时间: 2013-6-10 10:26
关关雎鸠 发表于 2013-6-10 10:13
靠,有事去了,居然被占了个先。。。

呵呵,思路一样

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

思路好。。。强大。。。喜欢这方法
作者: haxyek    时间: 2013-6-10 11:02
李奔 发表于 2013-6-10 10:26
谢谢参与,不过还需要更完善一点。
你注意到“把类似的字符串中重复符号去掉”了吗?
如果我输入"787%%-- ...

只要在这个char的数组里声明出来要过滤那些字符即可;
char[] s={'-','%'};
作者: 关关雎鸠    时间: 2013-6-10 11:16
楼上正解~
作者: 李奔    时间: 2013-6-10 14:04
除了以上两种思路,大家还有没有其他的?
作者: 李奔    时间: 2013-6-11 21:13
大家做的都不错!
把我的也附上吧!
  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();
复制代码

作者: 杞文明    时间: 2013-6-11 23:53
我觉得还是用正则表达式吧   很简单的!!那么我也把我的附上吧!!  和大家一起学习!!

  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. }
复制代码

作者: 甘斌斌    时间: 2013-6-12 06:28
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();




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