В Regex, как добавить один лишний пробел между каждым словом? - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть предложение:

"This is my new program"

Я хочу преобразовать его в

"This  is  my  new  program"

, т. Е. Дополнительный пробел после каждого слова.

Как мне добиться этого, используя Regex в .net?

Это должно быть универсальным.Скажем, например, если число пробелов между словами равно 4, оно должно составить 5.

Ответы [ 4 ]

2 голосов
/ 25 ноября 2011
string newString = Regex.Replace(originalString, @"\s+", " $0");
0 голосов
/ 25 ноября 2011

Вы можете использовать это.Хотя я думаю, что решение @LukeH лучше, если у вас нет других пробелов, которые вы хотите оставить нетронутыми.

resultString = Regex.Replace(subjectString, @"(\b\w+\b)(?!$)", "$1 ");

Объяснение:

"
(        # Match the regular expression below and capture its match into backreference number 1
   \b       # Assert position at a word boundary
   \w       # Match a single character that is a “word character” (letters, digits, etc.)
      +        # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
   \b       # Assert position at a word boundary
)
(?!      # Assert that it is impossible to match the regex below starting at this position (negative lookahead)
   $        # Assert position at the end of the string (or before the line break at the end of the string, if any)
)
"
0 голосов
/ 25 ноября 2011
yourString = Regex.Replace(yourString, "\ {1}", "  ")

Это заменяет каждый экземпляр одного (и только одного) пробела двумя пробелами.

0 голосов
/ 25 ноября 2011

Почему Regex? Почему вы не используете метод Replace для самой строки?

...