黑马程序员技术交流社区

标题: 怎样把字符串中不同的字符去掉? [打印本页]

作者: 我的专属    时间: 2014-3-18 22:02
标题: 怎样把字符串中不同的字符去掉?
本帖最后由 czwanglei 于 2014-3-22 18:41 编辑

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

作者: 百川    时间: 2014-3-18 22:19
本帖最后由 百川 于 2014-3-18 22:22 编辑

说实话开始没看懂。后来根据楼主的意思推测大概是想要去掉相连的相同字符吧?代码如下:使用char的集合实现
  1. string str = "123-----456----789---12-12";
  2.             List<char> chrList = new List<char>();
  3.             chrList.Add(str[0]);
  4.             for (int i = 1; i < str.Length; i++)
  5.             {
  6.                 if (str[i] != str[i - 1])
  7.                 {
  8.                     chrList.Add(str[i]);
  9.                 }
  10.             }
  11.             string strend = string.Join("", chrList);
  12.             Console.WriteLine(strend);
复制代码
若要去掉所有重复字符,则在上面代码的for循环内加for遍历。



作者: Doublekill    时间: 2014-3-18 22:21
protected string merge(string[] stringArr)
    {
        string returnString = string.Empty;

        foreach (string s in stringArr)
        {
            returnString += s + ",";
        }

        returnString = returnString.Substring(0, returnString.Length - 1);

        returnString = returnString.Replace(",,", ",");

        string[] strArr = returnString.Split(',');

        ArrayList arrList = new ArrayList();

        arrList.Add(strArr[0]);

        if (strArr.Length > 1)
        {
            for (int i = 1; i < strArr.Length - 1; i++)
            {
                if (!arrList.Contains(strArr[i]))
                {
                    arrList.Add(strArr[i]);
                }
            }
        }

        returnString  = string.Empty;

        for (int i = 0; i < arrList.Count; i++)
        {
            returnString += arrList[i] + ",";
        }

        returnString = returnString.Substring(0, returnString.Length - 1);

        return returnString;
    }
作者: cancle    时间: 2014-3-18 22:42
这个更为简便
  1. string str = "123-456---7---89-----123----2";
  2.             string[] s = str.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
  3.             str = string.Join("-", s);
  4.             Console.WriteLine(str);
  5.             Console.ReadKey();
复制代码

作者: shangxin    时间: 2014-3-18 23:43
static void Main(string[] args)

        {
            Console.WriteLine("请输入一段字符串:");
            // 接收输入的字符串
            string str = Console.ReadLine();
            //分割字符串str分割符为“-”号,
            string[] strs = str.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
            string newstr = ""; //定义新的字符串变量
         foreach (string str1 in strs)
            {
                newstr = newstr + str1 + "-";
            }
            newstr = newstr.Remove(newstr.Length - 1);
            Console.WriteLine(newstr);
            Console.ReadKey();
        }

作者: MagicBoy    时间: 2014-3-19 00:14
package javademo;

import java.util.TreeSet;
import java.util.Scanner;

  

public class Test2 {

    private String str;

    private TreeSet<String> noReapted;//带有String类型的TreeSet泛型

         

    public Test2() {

        Scanner in = new Scanner(System.in);

         

        System.out.println ("输入一个字符串:");

        str = in.nextLine();

         

        noReapted = new TreeSet<String>();

    }

      

    //清楚重复的数据

    public void removeRepeated(){

        for (int i = 0; i < str.length(); i++){

            noReapted.add(""+str.charAt(i));

            //str.charAt(i)返回的是char型  所以先加一个""空格 , 转换成String型

            //TreeSet泛型能保证重复的不加入 , 而且有序

        }

         

        str = "";

         

        for(String index:noReapted){

            str += index;

        }

         

        //输出

        System.out.println (str);

    }

      

    public static void main(String[] args) {

        Test2 dr = new Test2();

         

        dr.removeRepeated();

    }

}  

C:\Users\TR\Desktop\QQ截图20140319001326.png
作者: czwanglei    时间: 2014-3-19 10:43

请把问题设置为提问结束,这样可以给你加分。。
作者: 我的专属    时间: 2014-3-19 13:07
czwanglei 发表于 2014-3-19 10:43
请把问题设置为提问结束,这样可以给你加分。。

是这个问题重复发一遍还是以后再发问题的时候设置为提问结束啊?
作者: czwanglei    时间: 2014-3-19 18:39
我的专属 发表于 2014-3-19 13:07
是这个问题重复发一遍还是以后再发问题的时候设置为提问结束啊?

-你仔细看看发帖的日志,是把你提问的帖子“论坛提问”编辑为“提问结束”
作者: czwanglei    时间: 2014-3-20 10:26
请把问题设置为提问结束,这样可以给你加分。。仔细看看发帖的日志,是把你提问的帖子“论坛提问”编辑为“提问结束”
作者: 白白胖胖    时间: 2014-3-20 16:06
        //123-456---789-----123-2把类似的字符串中重复符号去掉,既得到123-456-789-123-2
        static void Main(string[] args)
        {
            Console.WriteLine("请输入要去除重复符号的字符串:");
            string str = Console.ReadLine();
            string[] strs = str.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
            string newstr = "";
            foreach (string item in strs)
            {
                newstr += item + "-";
            }
            //删除末尾添加的-
            newstr = newstr.Remove(newstr.Length - 1);
            Console.WriteLine(newstr);
            Console.ReadKey();


作者: zhl406893081    时间: 2014-3-20 16:09
static void Main(string[] args)
        {
            //声明一个字符串并赋值
            string str = "123-456---789-----123-2";
            //将字符串按照指定的char分割符分割为字符串数组
            string[] words = str.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
            //String.Join 方法用一个字符串数组和一个分隔符串创建一个新的字符串。
            str = string.Join("-", words);
            //输出
            Console.WriteLine(str);
            Console.ReadKey();
        }




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