Как удалить пробелы из строки?

У меня есть строковое значение

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

Есть ли способ удалить 2 пробела в каждом месте, где много пробелов?

Спасибо, за вашу помощь.

Ответ 1

Вы можете использовать регулярное выражение.

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

Ответ 2

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

Ответ 3

edit: это для скорости, иначе регулярное выражение, как было предложено другими ответами, в порядке. Эта функция очень быстрая.

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

Ответ 4

Это то, что вы ищете?

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

Ответ 5

Если вы знаете, сколько пробелов есть, вы можете использовать

text.Replace("       ", "     ");

Ответ 6

Попробуйте следующее:

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

Ответ 7

Попробуйте...

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

Выход:
SometexthereSometexthere

Ответ 8

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

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

Ответ 9

Если вам не нравится Regex или текст большой, вы можете использовать это расширение:

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

Ответ 10

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

//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...

Ответ 11

Вы можете использовать функцию String.Replace:

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

Но помните, что вы должны исследовать бит ваш запрос перед публикацией: это очень простой материал.