4

「foo-bar----baz--biz」に似た文字列があります

重要でない重複文字(-)を削除し、文字列を「foo-bar-baz-biz」にする最も簡単で最速の方法は何ですか?

のようなことを試してみまし.Replace("--","-")たが、それは多少しか機能しないようです。完全に実行するにはループで実行する必要があり、より良い方法があることを知っています。

最善の方法は何ですか?

4

3 に答える 3

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());
}
于 2012-10-09T04:01:21.947 に答える
4

Regexクラスを試す

using System.Text.RegularExpressions;

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

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

string output = regex.Replace(input, "-");
于 2012-10-09T04:00:37.690 に答える
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"、'-');

于 2012-10-09T04:18:50.527 に答える