Я импортирую некоторое количество записей с несколькими полями string
от старого db до нового db. Это кажется очень медленным, и я подозреваю, потому что я это делаю:
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
, некоторые говорят, что лучше оставить его как есть.
В то время как возможно, мне было бы легче сделать для себя контрольный пример, я решил задать вопрос здесь, если кто-то еще задается вопросом о том же вопросе или, если кто-то знает заранее.
Итак, каков самый быстрый способ сделать это на С#?
ИЗМЕНИТЬ
Я разместил тестовый результат здесь. На первый взгляд кажется, что путь Ричарда может быть самым быстрым. Тем не менее, его путь, или Марк, ничего не сделал из-за неправильного шаблона Regex. После исправления шаблона из
@"\^@\[\]`\}~\{\\"
to
@"\^|@|\[|\]|`|\}|~|\{|\\"
кажется, что старый способ с цепочками вызовов .Replace() является самым быстрым после