5

基本的には文字列を取りたいのですが、「+」が複数連続している場合は、1つを除いてすべて削除したいです。そう:

"This++is+an++++ex+ampl++e"

になるだろう

"This+is+an+ex+ampl+e"

LINQ と Regex のどちらが最適かはわかりませんが、特定の方法を使用する必要はありません。

4

4 に答える 4

0

より少ないコードでこれを行う方法はあります (そして、@slaks は、正規表現を再学習する必要があることを示してくれました) が、多くの場合、これはほとんどの場合、可能な限り高速に近いはずです。

public static string RemoveDupes(this string replaceString, char dupeChar){
    if(replaceString == null || String.Length < 2){ return replaceString; }
    int startOfGood = 0;
    StringBuilder result = new StringBuilder();
    for(int x = 0;x<replaceString.Length-1;x++){
        if(replaceString[x] == dupeChar && replaceString[x+1] == dupeChar){
            result.Append(replaceString.SubString(startOfGood,x-startOfGood));//I think this works with length 0
            startOfGood = x+1;
        }
    }
    result.Append(replaceString.Substring(startOfGood,
                   replaceString.Length-startOfGood));
    return result.ToString();
}
//Usage: 
var noDupes = "This++is+an++++ex+ampl++e".RemoveDupes('+');
于 2013-05-13T21:48:17.927 に答える