2016-12-01 2 views
-1

Я должен заменить пробелы « » на строку (которая может быть переменной длины). Если это все, что мне нужно сделать, это будет легко, но мне нужно только заменить пробелы в начале предложения/абзаца.Замените N номер строки. Элемент из строки

Я думал, что создание подстроки только в белых пространствах может помочь, но проблема, с которой я сталкиваюсь, заключается в том, что не существует уникального символа, который запускает все параграфы/предложения.

Как я могу заменить пробелы из абзаца, но только те, что были в начале его?

Пример:

<> <> <> <> <> <> Hello World строк и замены.

Ссылка: Каждый номер <> обозначает пробел, потому что текстовый редактор на этом сайте не допускает пробелов в начале предложения.

Я хочу, чтобы удалить <> только

+3

есть разница между 'String.Empty, который«»' и пространство, которое является ' "" – MethodMan

+0

https://dotnetfiddle.net/UhL3YI – 0x4f3759df

+0

@Patrick, не нужно обрезать его, а заменять string.Empty с " " –

ответ

1

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

var myString = "  Hello World . "; 

var countOfSpaces = myString.TakeWhile(c => c.Equals(' ')).Count(); 

var newString = string.Concat(Enumerable.Repeat("&#160;", countOfSpaces)) + myString.Substring(countOfSpaces); 

DotNetFiddle: https://dotnetfiddle.net/376Fmk

1

Дайте этому попытку:

string newString = Regex.Replace(oldString, "^\\s+|\\s+$", ""); 

EDIT: Вы можете изменить шаблон Regex, в зависимости от ваших потребностей:

  • ^\\s+ - Пробелы в начало строки.
  • \\s+$ - Пробел в конце строки.
  • ^\\s+|\\s+$ - Комбинация, которая будет соответствовать любому из двух других образцов.

EDIT 2: Для того, чтобы удалить, а не заменять их символы, вы можете сделать следующее:

Match m = Regex.Match(oldString, "^\\s+"); 
string newString = new StringBuilder(m.Value.Length) 
          .Insert(0, "&$160;", m.Value.Length) 
          .ToString() +  
         oldString.Substring(m.Value.Length); 
+0

Я не думал о том, как это сделать. Проблема, которую я вижу, заключается в том, что мне нужно заменить каждое пустое пространство « » Если есть 30, я заменяю 30. Если там 7, мне придется заменить 7. –

+0

@ElPadrino См. Редактирование. – Abion47

+0

Спасибо, он отлично работает. Я попытаюсь использовать это решение для замены областей табуляции вместо белых пробелов; это еще одна особенность, которую мне нужно доставить. –

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