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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

怎么把一个字符串中的多个重复的- 或/去掉只保留一个

评分

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

查看全部评分

4 个回复

倒序浏览
string s = "123-456---789-----123-2";
            string s1="";
            //读取字符串中的每个元素
            for (int i = 0; i < s.Length-1;i++ )
            {
                //判断,若相邻2个都为-,那么不列入考虑
                if (s.Substring(i, 1) == s.Substring(i + 1, 1) && s.Substring(i, 1) == "-")
                {
                    s += "";
                }
                else
                {
                    if(i==s.Length-2)
                    {
                        s1 += s.Substring(i, 1) + s.Substring(i+1,1);
                    }
                    else
                    s1 += s.Substring(i, 1);
                }
            }         
            
            Console.WriteLine(s1);
            Console.ReadLine();

评分

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

查看全部评分

回复 使用道具 举报
颜晓峰 发表于 2013-3-9 13:05
string s = "123-456---789-----123-2";
            string s1="";
            //读取字符串中的每个元素 ...

这个 厉害   纯判断
回复 使用道具 举报
调用字符串分割
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "123-456---789-----123-2";

            string[] strArr = s.Split(new char[] { '-' });

            string newStr = "";
            string tmpStr = "";
            for (int i = 0; i < strArr.Length; i++)
            {
                tmpStr = strArr.Trim();
                if (tmpStr == "")
                    continue;
                if (newStr == "")
                    newStr = tmpStr;
                else
                    newStr = newStr + tmpStr;

            }

            Console.WriteLine(newStr);
            
            Console.ReadKey();
        }
    }
}

1.png (24.79 KB, 下载次数: 45)

1.png

评分

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

查看全部评分

回复 使用道具 举报
这个题好眼熟啊。。。 上代码,看注释,不解释,你懂的。
  1. static void Main(string[] args)
  2.         {
  3.             string str = "123-456---789-----123-2";
  4.             char[] s = str.ToArray(); //转化成数组并存入s。
  5.             string f = "";//定义空字符串
  6.             bool b = true; //这个东西很重要。为了控制第二次相同的“-”存入。
  7.             for (int i = 0; i < s.Count(); i++)
  8.             {
  9.                 if (s[i]=='-')  //如果当前项等于“-”
  10.                 {
  11.                     if (b) //发现b=true
  12.                     {
  13.                         b = false; //这里是为了防止接下来连环出现相同的“-”,故定义false,当下次循环就不会存了。
  14.                         f = f + s[i];//拼接起来。
  15.                     }
  16.                 }
  17.                 else
  18.                 {
  19.                     b = true; //关键点。 如果执行了这里,说明当前是没有“-”的,所以下次发现有“-”的时候需要进行存储。即将b=true。
  20.                     f = f + s[i];
  21.                 }
  22.             }
  23.             Console.WriteLine(f);

  24.             Console.ReadKey();
  25.         }
复制代码
当然,你的题意可能是,不管“-”或“/”是否有没有连续,反正就取第一个。 其实思路也是一样的。看代码。
  1. static void Main(string[] args)
  2.         {
  3.             string str = "abc/de/f/g//d/67/s";
  4.             char[] ch = str.ToCharArray();
  5.             string f = "";
  6.             bool b = true;
  7.             for (int i = 0; i < str.Count(); i++)
  8.             {
  9.                
  10.                     if (ch[i] == '/')
  11.                     {
  12.                         if (b == true)
  13.                         {
  14.                             f = f + ch[i].ToString();
  15.                             b = false;
  16.                         }
  17.                         else
  18.                         {
  19.                             continue;
  20.                         }
  21.                     }
  22.                     else
  23.                     {
  24.                         f = f + ch[i].ToString();
  25.                     }
  26.             }
  27.             Console.WriteLine(f);
  28.             Console.ReadKey();
复制代码

评分

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

查看全部评分

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