Замена текста с сохранением регистра в C#

У меня есть набор предложений, которые мне нужно использовать для замены, например:

abc => cde
ab df => de
...

И у меня есть текст, в котором нужно внести изменения. Однако у меня нет возможности заранее узнать регистр указанного текста. Так, например, если у меня есть:

A bgt abc hyi. Abc Ab df h

Я должен заменить и получить:

A bgt cde nyi. Cde De h

Или как можно ближе к этому, т.е. сохранить случай

РЕДАКТИРОВАТЬ: Поскольку я вижу большую путаницу по этому поводу, я постараюсь немного пояснить:

Я спрашиваю о способе сохранить колпачки после замены, и я не думаю, что это прошло хорошо (не очень хорошо объяснил, что это влечет за собой), поэтому я приведу более реалистичный пример, используя реальные слова. .

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

didn't achieve success => failled miserably

, то я получаю в качестве входных данных набор:

As he didn't achieve success, he was fired

я получил бы

As he failled miserably, he was fired

, но если бы не был написан с заглавной буквы, так что потерпел бы неудачу, если бы достижение или успех были написаны с заглавной буквы, так было бы с треском, если бы в каком-то из них было более 1 буквы с заглавной буквы, так был бы его аналог

Мои основные возможности (те, которые я действительно хочу принять во внимание)

  • только первая буква первого слова заглавная
  • только первая буква каждого слова заглавная
  • все буквы заглавные

Если я смогу справиться с этими тремя, это уже будет приемлемо, я думаю - это более простые - конечно, более подробное решение было бы лучше, если бы оно было доступно.

Есть идеи?

9
задан 537mfb 19 June 2012 в 05:58
поделиться