2012-10-09 109 views
4

我也有類似的字符串「富酒吧巴茲---- - BIZ」最簡單的方法

什麼是消除重複無意義的最簡單,最快捷的方式字符(-)並將字符串「foo-bar-baz-biz」?

我試過做類似.Replace("--","-")的東西,但是這似乎只起作用。我不得不在循環中運行它來完成它,並且我知道有更好的方法。

最好的方法是什麼?

回答

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()); 
} 
+0

我只是寫這:) :) – estebane97

+1

或更好的只是有像'RemoveDuplicates(這個字符串str,字符重複)的擴展方法'所以它不僅僅是這樣工作:P – Earlz

+0

@Earlz非常好的改進! :D –

4

嘗試Regex

using System.Text.RegularExpressions; 

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

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

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

嗯..我覺得用正則表達式很容易,但不知道如何構造它..我不知道是否有一個比較簡單的解決方案不使用正則表達式 – Earlz

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; 
    } 

字符串s = RemoveDuplicates( 「F --- OO-酒吧----巴茲 - 商業」, ' - ');

+1

這真的不是我所說的「簡單」! – Guillaume