Есть ли способ удаления пробельных символов из строки? - PullRequest
3 голосов
/ 12 сентября 2011

Существует ли функция-член класса string (или что-то еще) для удаления всех пробелов из строки?Что-то вроде Python str.strip()?

Ответы [ 12 ]

26 голосов
/ 12 сентября 2011

Вы можете просто сделать:

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

Если вы хотите удалить все пробелы, вы можете использовать Linq, даже если синтаксис не очень привлекателен для этого варианта использования:

myString = new string(myString.Where(c => !char.IsWhiteSpace(c)).ToArray());
18 голосов
/ 12 сентября 2011

String.Trim метод удаляет конечные и ведущие пробелы.Это функциональный эквивалент стрип-метода Python.

7 голосов
/ 12 сентября 2011

LINQ здесь кажется излишним, преобразовывая строку в список, фильтруя список, а затем возвращая его обратно в строку. Для удаления всего пробела я бы пошел на регулярное выражение. Regex.Replace(s, @"\s", ""). Это распространенная идиома, которая, вероятно, была оптимизирована.

3 голосов
/ 12 сентября 2011

Если вы хотите заменить все пробелы в строке (не только начальные и конечные пробелы) на основе определения .NET, что такое пробелы или нет, вы можете использовать довольно простой запрос LINQ, чтобы сделатьэто работает.

string whitespaceStripped = new string((from char c in someString
                                        where !char.IsWhiteSpace(c)
                                        select c).ToArray());
3 голосов
/ 12 сентября 2011

Если вы хотите удалить пробелы, которые предшествуют строке или в ее конце, вы можете взглянуть на TrimStart (), TrimEnd () и Trim ().

2 голосов
/ 12 сентября 2011

Да, String.Trim().

var result = "   a b    ".Trim();

дает "a b" в result. По умолчанию все пробелы урезаны. Если вы хотите удалить только пробел, вам нужно набрать

var result = "   a b    ".Trim(' ');

Если вы хотите удалить все пробелы в строке, вы можете использовать string.Replace().

var result = "   a b    ".Replace(" ", "");

дает "ab" в result. Но это не эквивалентно str.strip() в Python.

2 голосов
/ 12 сентября 2011

Да, отделка.

String a = "blabla ";
var b = a.Trim(); // or TrimEnd or TrimStart
1 голос
/ 31 мая 2013

Есть много разных способов, некоторые быстрее, чем другие:

public static string StripTabsAndNewlines(this string s) {

    //string builder (fast)
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < str.Length; i++) {
        if ( !  Char.IsWhiteSpace(s[i])) {
            sb.Append();
        }
    }
    return sb.tostring();

    //linq (faster ?)
    return new string(input.ToCharArray().Where(c => !Char.IsWhiteSpace(c)).ToArray());

    //regex (slow)
    return Regex.Replace(s, @"\s+", "")

}
1 голос
/ 12 сентября 2011

Я не знаю много о Python ...

ЕСЛИ str.strip() просто удаляет пробелы в начале и в конце, тогда вы можете использовать str = str.Trim() в .NET ... в противном случае вы могли быпросто str = str.Replace ( " ", "") для удаления всех пробелов.

Если он удаляет все пробелы, тогда используйте

str = (from c in str where !char.IsWhiteSpace(c) select c).ToString()
0 голосов
/ 13 декабря 2014

Я удивлен, что никто не упомянул это:

String.Join("", " all manner\tof\ndifferent\twhite spaces!\n".Split())

string.Split по умолчанию распределяется по символам char.IsWhiteSpace, так что это очень похожее решение для фильтрацииэти символы выводятся при прямом использовании char.IsWhiteSpace, и это однострочный текст, который также работает в средах до LINQ.

...