У меня есть строковое значение
string text = "-----------------\r\n Some text here Some text here\r\n"
Есть ли способ удалить 2 пробела в каждом месте, где много пробелов?
Спасибо, за вашу помощь.
У меня есть строковое значение
string text = "-----------------\r\n Some text here Some text here\r\n"
Есть ли способ удалить 2 пробела в каждом месте, где много пробелов?
Спасибо, за вашу помощь.
Вы можете использовать регулярное выражение.
var result = new Regex("\s{2,}").Replace(text,constForWhiteSpace)
Regex regex = new Regex(@"[ ]{2,}"); // Regex to match more than two occurences of space
text = regex.Replace(text, @"");
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();
}
Это то, что вы ищете?
text = text.Replace(" "," ");
Если вы знаете, сколько пробелов есть, вы можете использовать
text.Replace(" ", " ");
Попробуйте следующее:
var result = new Regex("\s{2,}").Replace(text,string.Empty)
Попробуйте...
string _str = "-----------------\r\n Some text here Some text here\r\n";
_str = _str.Trim();
Console.WriteLine(_str.Replace(" ",""));
Выход:
SometexthereSometexthere
var dirty = "asdjk asldkjas dasdl l aksdjal;sd asd;lkjdaslj";
var clean = string.Join(" ", dirty.Split(' ').Where(x => !string.IsNullOrEmpty(x)));
Если вам не нравится 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
Не самая приятная часть кода, но это должно удалить два пробела из текста, если вы хотите использовать регулярное выражение.
//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...
Вы можете использовать функцию String.Replace:
text=text.Replace(" "," ");
Но помните, что вы должны исследовать бит ваш запрос перед публикацией: это очень простой материал.