2013-04-16 51 views
0

我有一個字符串值如何從字符串中刪除空格?

string text = "-----------------\r\n  Some text here  Some text here\r\n" 

有沒有一種方法,以消除在每個地方有很多空間的地方2個空格?

謝謝,你的幫助

+7

ouptput你想要什麼? – Rohit

+0

不確定兩點之間是什麼意思? – V4Vendetta

+0

檢查http://stackoverflow.com/questions/206717/how-do-i-replace-multiple-spaces-with-a-single-space-in-c –

回答

5

您可以使用正則表達式。

var result = new Regex("\s{2,}").Replace(text,constForWhiteSpace) 
+0

這可能會很慢,但取決於您需要做多少個字符串這個。 –

+0

當然,考慮這個「通用」答案。 – lavrik

+1

這看起來不對。 OP表示他們希望刪除兩個空格,但是這會刪除所有空格。 – keyboardP

1

編輯:這是速度,否則正則表達式由其他答案建議罰款。這個功能非常快。

編輯2:只要刪除\ r \ n如果你想保留新的行。

 public static String SingleSpacedTrim(String inString) 
     { 
      StringBuilder sb = new StringBuilder(); 
      Boolean inBlanks = false; 
      foreach (Char c in inString) 
      { 
       switch (c) 
       { 
        case '\r': 
        case '\n': 
        case '\t': 
        case ' ': 
         if (!inBlanks) 
         { 
          inBlanks = true; 
          sb.Append(' '); 
         } 
         continue; 
        default: 
         inBlanks = false; 
         sb.Append(c); 
         break; 
       } 
      } 
      return sb.ToString().Trim(); 
     } 
+0

這將白色空間摺疊爲單個空間字符?或者它有什麼作用? – dtb

+0

@dtb是的,這正是它的作用 –

1

這是你在找什麼?

text = text.Replace(" "," "); 
0

如果你知道有多少空間也有,你可以使用

text.Replace("  ", "  "); 
2
Regex regex = new Regex(@"[ ]{2,}"); // Regex to match more than two occurences of space 
text = regex.Replace(text, @""); 
+1

這會返回'ab.c'的'a.bc'(用空白替換'.') – I4V

-1

您可以使用功能與string.replace:

text=text.Replace("  "," "); 

但要記住,你應該在發佈前您的要求,研究了一下:這是很基本的東西。

+0

他爲什麼會收到negavite vote?我也使用這種方法,它的工作原理!簡單,簡單,工作! – Sonhja

0

試試這個:

var result = new Regex("\s{2,}").Replace(text,string.Empty) 
0

試試吧....

string _str = "-----------------\r\n  Some text here  Some text here\r\n"; 
    _str = _str.Trim(); 
    Console.WriteLine(_str.Replace(" ","")); 

輸出:
SometexthereSometexthere

0
var dirty = "asdjk asldkjas dasdl l aksdjal;sd   asd;lkjdaslj"; 

var clean = string.Join(" ", dirty.Split(' ').Where(x => !string.IsNullOrEmpty(x))); 
0

如果你不喜歡正則表達式或文本是大,你可以使用這個擴展:

public static String TrimBetween(this string text, int maxWhiteSpaces = 1) 
{ 
    StringBuilder sb = new StringBuilder(); 
    int count = 0; 
    foreach (Char c in text) 
    { 
     if (!Char.IsWhiteSpace(c)) 
     { 
      count = 0; 
      sb.Append(c); 
     } 
     else 
     { 
      if (++count <= maxWhiteSpaces) 
       sb.Append(c); 
     } 
    } 
    return sb.ToString(); 
} 

然後,它的簡單:

string text = "-----------------\r\n  Some text here  Some text here\r\n"; 
text = text.TrimBetween(2); 

結果:

----------------- 
Some text here Some text here 
0

不是最好的一段代碼,但這應該從文本刪除兩個空格,如果你想使用正則表達式。

//one.two..three...four....five..... (dots = spaces) 
string input = "one two three four five  "; 

string result = new Regex(@"\s{2,}").Replace(input, delegate(Match m) 
{  
    if (m.Value.Length > 2) 
    {  
     int substring = m.Value.Length - 2; 
     //if there are two spaces, just remove the one 
     if (m.Value.Length == 2) substring = 1; 

     string str = m.Value.Substring(m.Value.Length - substring); 
     return str; 
    } 
    return m.Value; 
}); 

輸出將

//dots represent spaces. Two spaces are removed from each one but one 
//unless there are two spaces, in which case only one is removed. 
one.two.three.four..five...