Замена нескольких символов в строке, самый быстрый способ?

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

foreach (var oldObj in oldDB)
{
    NewObject newObj = new NewObject();
    newObj.Name = oldObj.Name.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
       .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
       .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    newObj.Surname = oldObj.Surname.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
       .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
       .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    newObj.Address = oldObj.Address.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
       .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
       .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    newObj.Note = oldObj.Note.Trim().Replace('^', 'Č').Replace('@', 'Ž').Replace('[', 'Š')
       .Replace(']', 'Ć').Replace('`', 'ž').Replace('}', 'ć')
       .Replace('~', 'č').Replace('{', 'š').Replace('\\', 'Đ');
    /*
   ... some processing...
    */
}

Теперь я прочитал несколько сообщений и статей в сети, где я видел много разных мыслей по этому поводу. Некоторые говорят, что было бы лучше, если бы я использовал регулярное выражение с MatchEvaluator, некоторые говорят, что лучше оставить все как есть.

Хотя, возможно, мне было бы проще просто сделать контрольный пример для себя, я решил задать вопрос здесь на случай, если кто-то еще задавался вопросом о том же вопросе или если кто-то знает заранее.

Так как же быстрее всего это сделать в C #?

РЕДАКТИРОВАТЬ

Я разместил тест здесь . На первый взгляд кажется, что путь Ричарда может быть самым быстрым. Однако ни его способ, ни способ Марка ничего бы не дали из-за неправильного шаблона регулярного выражения. После исправления шаблона из

@"\^@\[\]`\}~\{\\" 

к

@"\^|@|\[|\]|`|\}|~|\{|\\" 

кажется, что старый способ с цепочками вызовов.Replace ()в конце концов самый быстрый

26
задан Community 23 May 2017 в 12:01
поделиться