2012-10-09 104 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