мне нужно заменить несколько подстрок в строкеЗаменить несколько подстрок в строке
Скажут:
- заменить все А в исходной строке на B
- заменить все B в исходной строке на D
так, например, "AB дает BD"
"наивный" соответствую ach не работает должным образом:
string S="AB";
S=S.Replace("A","B");
S=S.Replace("B","D");
как он даст DD вместо BD. (сначала A заменяется на B, но затем без необходимости изменяется на D)
Как бороться с такими случаями? Имеет ли смысл подстроки любого размера делать такие отдельные замены?
EDIT: Я привел пример не реальной жизни, где на самом деле он работал бы в обратном порядке (сначала от B до D, затем от A до B). Но, как другие заметили, меня интересуют более общие решения: для любого списка замещений символов и для любого списка замещений слов
С символами, я полагаю, теперь хороший подход состоит только в том, чтобы пройти через все символы в строке и построить новую строку, заменяя при необходимости.
Для слов, я полагаю, это может быть сложнее, а что, если одно замеченное слово является частью другого слова?
Например
string S="man superman woman superwoman"
и я хочу заменить «человека» на «мальчик» и «женщина» на «девочка» только как отдельные слова
просто сделать это в обратном направлении, B к D, а затем А до Б – NoviceProgrammer
У вас есть только отдельные символы, чтобы заменить или что бы ваш реальный случай? –
Loop лучше всего, но вы можете заменить * в нижнем регистре *, затем toUpper(), когда вы сделали –