Объяснение
String.Replace(String,string)
s doco doco состояния:
Этот метод выполняет порядковый (с учетом регистра и без учета культуры) поиск вfind oldValue.
String.IndexOf
* Исходный код показывает, что он использует StringComparison.CurrentCulture
public int IndexOf(String value) {
return IndexOf(value, StringComparison.CurrentCulture);
}
Что делать
В ядре .NET вы можете сделать это с InvariantCulture
string replaced = str.Replace("bc", "BC", StringComparison.InvariantCulture);