Установите скобки до и после для каждого слова в c# - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь установить фигурные скобки '{}' до и после каждого слова в строке. например Hello everyone, is this my string. и я хочу изменить его на {Hello} {everyone}, {is} {this} {my} {string}.. Для этого я разделил слова, используя следующий код:

string a="Hello everyone is this my string.";
string[] words=a.Split(' ');
for(int i=0; i<words.Length; i++)
{
a=a.Replace(words[i],"{"+words[i]+"}");
}

код работает хорошо, но это заменит is на this. и я получил вывод, как это {Hello} {everyone}, {is} th{is} {my} {string}. Как решить эту проблему. Заранее спасибо.

1 Ответ

3 голосов
/ 27 марта 2020

Причиной конкретного поведения является следующая строка.

a=a.Replace(words[i],"{"+words[i]+"}");

String.Replace заменит все вхождения конкретной строки. Поэтому, когда вы попытаетесь заменить is, вы в конечном итоге замените подстроку is в this.

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

var originalString ="Hello everyone is this my string.";
var words= Regex.Replace(originalString,@"\b[^ ]+\b",@"{$0}");

Это гарантирует, что символ точки будет обработан так же, как в желаемом ответе в OP.

Образцы

Hello everyone is this my string.
{Hello} {everyone} {is} {this} {my} {string}.
Hello everyone, is this my string.
{Hello} {everyone}, {is} {this} {my} {string}.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...