2013-03-11 2 views
1

Как я могу удалить пробел из строки в .NET?Как удалить пробел из строки?

eg. «HELLO WORLD!» Становится «HELLOWORLD!»

+0

Ярлык в качестве ссылки: «HELLO WORLD!». Заменить («», «»); – Sunny

+0

@Sundeep: нет, это только , который НЕ совпадает с «пробелом» –

+0

@Jack: ответ, помеченный как правильный, не использует 'Char.IsWhiteSpace()' –

ответ

3

Использование Regex, (то есть, как я хотел бы сделать это!)

string sample = "HELLO WORLD ! "; 

resultString = Regex.Replace(sample, @"\s+", ""); 

Или LINQ путь

string sample = "Hello world! "; 
var result = new string(sample.Where(c => !Char.IsWhiteSpace(c)).ToArray()); 

Проверить это SO Вопрос: Fastest way to remove white spaces in string

Кажется, это лучший способ сделать это.

public static string RemoveWhiteSpaces(this string str) 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < str.Length; i++) 
    { 
     char c = str[i]; 
     if (!Char.IsWhiteSpace(c)) 
      sb.Append(c); 
    } 

    return sb.ToString(); 
} 
+0

Возможно, более эффективно использовать '\ s +', нет? – Blorgbeard

+0

@Blorgbeard - как вы говорите, сэр! –

+0

Документы 'Regex' явно не упоминают об этом, но я предполагаю, что' \ s' использует 'Char.IsWhiteSpace()' - поэтому он получает все пробелы Unicode. –

2

Если вы просто беспокоюсь только о пространствах, используйте Replace метод класса Струнный:

var str = " HELLO WORLD ! "; 
var strWithoutSpaces = str.Replace(" ", ""); 

В противном случае, используйте метод Regex.Replace как предложено в ответ AppDeveloper в.

+0

Хорошо, но только получает пробелы - не вкладки и т. Д. – Blorgbeard

+0

Есть БОЛЬШЕ больше «пробелов», чем просто «». –

+0

Хорошо, я повторил свой ответ. – cdmckay

1

Используйте Char.IsWhiteSpace перебрать каждый символ в исходной строке (модификация ответа AppDeveloper в)

public static string RemoveWhiteSpaces(this string str) 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < str.Length; i++) 
    { 
     if(!Char.IsWhiteSpace(str, i)){ 
      sb.Append(str[i]); 
     } 
    } 
    return sb.ToString(); 
} 

----- Оригинал Ответ ------

String.Trim ()

Символы пробега определяются стандартом Юникода. Метод Trim() удаляет любые ведущие и завершающие символы, которые возвращают значение true, когда они передаются в метод Char.IsWhiteSpace .

http://msdn.microsoft.com/en-us/library/t97s7bs3.aspx

+0

'Trim' удаляет только пробелы от начала и до конца строки. – cdmckay

+0

Ах, простите об этом, не видел, что вам нужна целая цепочка – smith324

+0

Так как Trim использует 'Char.IsWhiteSpace' внутри, я бы использовал тот же подход здесь. Просто создайте 'StringBuilder' и перейдем к исходной строке, добавьте символы в конструктор if! IsWhiteSpace – smith324

1

Используйте этот

var original=" HELLO WORLD \t! "; 
var result=original.Select(x => x.ToString().Trim()).Aggregate(String.Concat); 

или это

var result=new String(original.Where(x => !Char.IsWhiteSpace(x)).ToArray()); 

Это действительно удаляет пробельные не только пространства.

+1

Интересный подход, но я думаю, вы должны использовать' Char.IsWhiteSpace' вместо преобразования каждого символа в строку. –

+0

@pswg: Это будет 'var result = new String (original.Where (x =>! Char.IsWhiteSpace (x)). ToArray());' –

+0

+1 Я отредактировал ваш ответ, включив его в качестве альтернативного решения , –

Смежные вопросы