消除字符串中“无关紧要”重复字符的最简单方法

时间:2012-10-09 03:56:59

标签: c# .net string

我有一个类似于“foo-bar ---- baz - biz”的字符串

消除无关紧要的重复字符(-)并使字符串“foo-bar-baz-biz”的最简单,最快捷的方法是什么?

我尝试过像.Replace("--","-")这样的事情,但这似乎只是有点工作..我必须在循环中运行才能完全完成它,我知道有更好的方法。

最好的方法是什么?

3 个答案:

答案 0 :(得分:10)

试试这个,

string finalStr = string.Join("-", x.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries))

如果将其转换为Extension method

,会好得多
static class StringExtensions 
{
    public static string RemoveExtraHypen(this string str) 
    {
        return string.Join("-", str.Split(new []{'-'}, StringSplitOptions.RemoveEmptyEntries));
    }
}

使用

private void SampleDemo()
{
    string x = "foo-bar----baz--biz";
    Console.WriteLine(x.RemoveExtraHypen());
}

答案 1 :(得分:4)

尝试Regex

using System.Text.RegularExpressions;

string input = "foo-bar----baz--biz";

Regex regex = new Regex("\\-+");

string output = regex.Replace(input, "-");

答案 2 :(得分:0)

非常简单的解决方案:)

    private string RemoveDuplicates(string s, char toRemove)
    {
        if (s.Length <= 1) return s;
        char s1,s2;
        string result="";
        result = s[0].ToString();
        s1 = s[0];
        for (int i = 0; i < s.Length-1; i++) 
        {

            s2 = s[i + 1];
            if ( s2.Equals(toRemove)&& s1.Equals(s2))
            {
                s1 = s[i]; 
                continue;
            }
            result += s2.ToString();
            s1 = s[i + 1];

        }
        return result;
    }

string s = RemoveDuplicates(“f --- oo-bar ---- baz - biz”,' - ');