@LuVairo

Чем отличается Regex.Replace(...) от string.Replace(...)?

Нужно написать алгоритм, который заменит все вхождения строки initial в строку line на final.
Так нужно делать до тех пор, пока в строке line не останется фрагментов равных initial.

Пример входных данных:
line = "abbacabba"
initial = "ba"
final = "a"
Выходные данные: aaacaaa

Я написал две реализации: с использованием string.Replace(...) и с Regex.Replace(...)
Первая версия проходит все тесты, но не укладывается по времени.
А вот вторая выдаёт неправильный ответ на 6/10 тесте (К сожалению, тесты скрыты).
Как такое возможно? Разве Regex.Replace(...) и string.Replace(...) работают по-разному?

Первая реализация:
static string ReplacedStringWithRegex(string line, string initial, string final)
{
    while (line.Contains(initial))
        line = Regex.Replace(line, initial, final);

    return line;
}


Вторая реализация:
static string ReplacedStringWithoutRegex(string line, string initial, string final)
{
    while (line.Contains(initial))
        line = line.Replace(initial, final);

    return line;
}
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 1

Чем отличается Regex.Replace(...) от string.Replace(...)

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

Соответственно, если переменная initial будет содержать какие-то специальные символы (например *, + и ?), то их поведение будет различаться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы