Я импортирую некоторое количество записей с несколькими полями 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 ()в конце концов самый быстрый