Замените несколько строковых элементов в C#

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

77
задан Chris McKee 10 June 2014 в 15:34
поделиться

3 ответа

Быстрее - нет. Более эффективно - да, если вы будете использовать класс StringBuilder . В вашей реализации каждая операция генерирует копию строки, которая при определенных обстоятельствах может снизить производительность. Строки являются неизменяемыми объектами, поэтому каждая операция просто возвращает измененную копию.

Если вы ожидаете, что этот метод будет активно вызываться для нескольких строк значительной длины, может быть лучше " перенести "свою реализацию в класс StringBuilder . С его помощью любые изменения выполняются непосредственно в этом экземпляре, поэтому вы избавляетесь от ненужных операций копирования.

public static class StringExtention
{
    public static string clean(this string s)
    {
        StringBuilder sb = new StringBuilder (s);

        sb.Replace("&", "and");
        sb.Replace(",", "");
        sb.Replace("  ", " ");
        sb.Replace(" ", "-");
        sb.Replace("'", "");
        sb.Replace(".", "");
        sb.Replace("eacute;", "é");

        return sb.ToString().ToLower();
    }
}
106
ответ дан 24 November 2019 в 10:55
поделиться

Maybe a little more readable?

    public static class StringExtension {

        private static Dictionary<string, string> _replacements = new Dictionary<string, string>();

        static StringExtension() {
            _replacements["&"] = "and";
            _replacements[","] = "";
            _replacements["  "] = " ";
            // etc...
        }

        public static string clean(this string s) {
            foreach (string to_replace in _replacements.Keys) {
                s = s.Replace(to_replace, _replacements[to_replace]);
            }
            return s;
        }
    }

Also add New In Town's suggestion about StringBuilder...

13
ответ дан 24 November 2019 в 10:55
поделиться

это будет более эффективно:

public static class StringExtension
{
    public static string clean(this string s)
    {
        return new StringBuilder(s)
              .Replace("&", "and")
              .Replace(",", "")
              .Replace("  ", " ")
              .Replace(" ", "-")
              .Replace("'", "")
              .Replace(".", "")
              .Replace("eacute;", "é")
              .ToString()
              .ToLower();
    }
}
12
ответ дан 24 November 2019 в 10:55
поделиться
Другие вопросы по тегам:

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