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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天行 中级黑马   /  2013-3-11 10:04  /  2191 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

123-456---7---89-----123----2把类似的字符串中重复符号去掉,既得到123-456-789-123-2

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

9 个回复

倒序浏览
可以用一个变量来存储 字符   用一个计数器来记住它出现的次数
代码可如下:
  1. static void Main(string[] args)
  2. {
  3. string sourestring = "122223-456----7---89-----123----2";
  4. string dedaodestring = ""; //用来存储转换的字符
  5. char ch = ' '; //用来存储判段的字符
  6. int cnt = 0; //用来统计字符的个数
  7. for (int i = 0; i < sourestring.Length; i++)
  8. {

  9. if((sourestring[i] >= '0' && sourestring[i] <= '9') || cnt <=0)
  10. {
  11. dedaodestring = dedaodestring + sourestring[i];
  12. if (i < sourestring.Length - 1)
  13. {
  14. ch = sourestring[i + 1]; //去到满足字符后面的一个
  15. cnt = 0;
  16. }
  17. }
  18. if (ch == sourestring[i]) //用来统计 符号的个数
  19. {
  20. cnt++; //ch 中存的是后一个字符 而sourestring[i]是前一个字符
  21. }
  22. }
  23. Console.WriteLine("转换之前:{0}",sourestring);
  24. Console.WriteLine("转化之后:{0}",dedaodestring);
  25. Console.ReadKey();
  26. }

  27. <IMG border=0 alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=13454&size=300x300&key=a44bc326fc5746e51948378cd69c6790&nocache=yes&type=fixnone" aid="attachimg_13454">
复制代码

论坛字符串问题.jpg (159.83 KB, 下载次数: 39)

论坛字符串问题.jpg

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
  1.         static void Main(string[] args)
  2.         {
  3.             string a = "123-456---789-----123-2";
  4.             qudiao(a);
  5.             Console.ReadKey();
  6.         }
  7.         public static void qudiao(string a)
  8.         {
  9.             char c='\0';
  10.             ArrayList al = new ArrayList();
  11.             foreach (char i in a)
  12.             {
  13.                 if (Regex.IsMatch(i.ToString(), @"\w"))
  14.                 {
  15.                     if (c != i)
  16.                     {
  17.                         al.Add(i);
  18.                         Console.Write(i);
  19.                     }
  20.                 }
  21.                 c=i;
  22.             }
  23.        }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
俺做的。但方法不一样。
回复 使用道具 举报
string lin = “123-456---7---89-----123----2 ”
用下面的这句话以“-”分割并保留一个“-”
string[] li = lin .Split(new char[]{'- '},StringSplitOptions.RemoveEmptyEntries);
再遍历输出
回复 使用道具 举报
static void Main(string[] args)
        {
            //123-456---7---89-----123----2把类似的字符串中重复符号去掉,既得到123-456-789-123-2
            string str = "123-456---7---89-----123----2";
            string[] str1 = str.Split('-');
            string s = "";
            for (int i = 0; i < str1.Length; i++)
            {
                s += str1[i];
            }
            for (int i = 1; i <= 4; i++)
            {
                s = s.Insert(3*i+i-1, "-");
            }
            Console.WriteLine(s);
            Console.ReadKey();
        }


谢谢参考

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
肖彬 中级黑马 2013-3-11 18:18:49
7#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace ConsoleApplication1
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             string str = "123-456---7---89-----123----2";//保存要处理的字符串
  12.             Console.WriteLine("转换前的字符串为:" + str);

  13.             string[] str2 = str.Split('-');

  14.             StringBuilder str3 = new StringBuilder();  //定义一个StringBuilder来存放转换后的字符串

  15.             foreach (string s in str2)
  16.             {
  17.                 if (!String.IsNullOrEmpty(s))
  18.                 {
  19.                     str3.Append(s + "-");
  20.                 }
  21.             }

  22.             string str4 = str3.ToString().Substring(0, str3.ToString().Length - 1);

  23.             Console.WriteLine("转换后的字符串为:" + str4);
  24.             
  25.         }
  26.     }
  27. }
复制代码

未命名.jpg (28.09 KB, 下载次数: 40)

结果页面

结果页面

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
宋健 中级黑马 2013-3-11 18:49:02
8#
本帖最后由 宋健 于 2013-3-11 21:28 编辑

string str = "123-456---7---89-----123----2";
            string[] strNew = str.Split(new char[] {'-'},StringSplitOptions.RemoveEmptyEntries);
            str = "";
            for (int i = 0; i < strNew.Length; i++)
            {
                str += "-" + strNew;
            }
            Console.WriteLine(str.Substring(1));
这样也可以解决此问题,你看下。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
边亮 中级黑马 2013-3-11 20:58:00
9#
string str = "123-----123------123-----123";
            string strNew = "";//定义一个变量接收
            string[] number = str.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);//以-为分隔符分割成一个字符串数组,并去掉-
            for (int i = 0; i < number.Length-1; i++)//遍历循环数组然后除最后一个都+“-”;
            {
                strNew += number[i] + "-";
            }
            strNew = strNew + number[number.Length-1];//重新赋值并输出
            Console.WriteLine(strNew);
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 郑志强 于 2013-3-11 21:06 编辑
  1. string str = "123-456---7---89-----123----2";
  2.             string[] strS = str.Split(new char[] {'-'}, StringSplitOptions.RemoveEmptyEntries);//利用字符串方法Split清除掉-
  3.             Console.WriteLine("{0}-{1}-{2}{3}-{4}-{5}", strS[0], strS[1], strS[2], strS[3], strS[4], strS[5]);//这里加上-自己排序了
  4.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马