Массовая замена статичных значений. Как реализовать одним кубиком?

  • Автор темы Автор темы Emfortes
  • Дата начала Дата начала

Emfortes

Client
Регистрация
28.08.2015
Сообщения
29
Реакции
20
Баллы
3
Приветствую. Появилась острая необходимость массово заменить в тексте определенные символы.

Например, есть переменная с тестом на русском и английском языке. Нам нужно оставить только русский язык.
Что я сделал? Подключил отдельный список и впихнул туда английский алфавит. Далее по циклу идет затирание английских символов путем замены на пустое значение каждой буквы из списка.

Но цикл отнимает много времени. Как это можно сделать одним действием?

Находил на форуме вот такое решение:

Код:
Развернуть Свернуть Копировать
var str = "Исходная строка 12 34 42";
var dics= new Dictionary<string, string>(
        StringComparer.OrdinalIgnoreCase)
        {
            {"12", "10"},
            {"2", "13"},
            {"34", "43"},
            {"42", "23"},
        };
var rez= Regex.Replace(str, match => { return dics.ContainsKey(match.Groups[1].Value) ?dic[match.Groups[1].Value] : match.Value; });

Но у меня выдает ошибку(
Буду признателен за помощь.
 
может из за этого
2018-01-26_190230.png
 
  • Спасибо
Реакции: Emfortes
Поменял.
Но теперь выдает следующее сообщение:

Код:
Развернуть Свернуть Копировать
Компиляция кода  Ошибка в действии "CS0120" "Для нестатического поля, метода или свойства "System.Text.RegularExpressions.Regex.Replace(string, System.Text.RegularExpressions.MatchEvaluator)" требуется ссылка на объект". [Строка: 9; Cтолбец: 10]

К сожалению я с сишарпом пока на "Вы"
 
ну так задай static
 
  • Спасибо
Реакции: Emfortes
Эмм, стесняюсь спросить...
Можно ткнуть пальцем - как это задавать?)

было бы интересно видеть куда ещё тыкать, а так только в небо, ну или я за тебя поправлю на угад :dt: )) , надеюсь ошибка пропадёт
 
На всякий случай файлик приложу. Там рабочий вариант по циклу и неполноценный вариант с кодом.
Таки и не нагуглилось решение. Вероятно, что кроме цикла никак не сделаешь, ни на сишарпе, ни на джаве.
 

Вложения

Код:
Развернуть Свернуть Копировать
var text = project.Variables["переменная"].Value;

text = text.Replace("a", "")
               .Replace("b", "")
               .Replace("c", "")
               .Replace("d", "")
               .Replace("e", "")
               .Replace("f", "");

project.Variables["переменная"].Value = text;
Вот так можно, только осталось весь алфавит дописать в верхнем и нижнем регистре.
 
  • Спасибо
Реакции: yourmind и Emfortes
Код:
Развернуть Свернуть Копировать
var text = project.Variables["переменная"].Value;

text = text.Replace("a", "")
               .Replace("b", "")
               .Replace("c", "")
               .Replace("d", "")
               .Replace("e", "")
               .Replace("f", "");

project.Variables["переменная"].Value = text;
Вот так можно, только осталось весь алфавит дописать в верхнем и нижнем регистре.

И это сработало!) Большое человеческое спасибо:-)
 
Надеюсь продолжение кода ты сгенерил зенкой, а не ручками писал:D
Как оказалось можно было сделать всё еще проще 2-мя стандартными кубиками замены:D
20326313.jpg
 
  • Спасибо
Реакции: Emfortes
Надеюсь продолжение кода ты сгенерил зенкой, а не ручками писал:D
Как оказалось можно было сделать всё еще проще 2-мя стандартными кубиками замены:D

Да, это тоже здорово. С английским алфавитом прокатит:ay:
А если допустим корейский алфавит затирать, то тот кубик на сишарпе прямо выручает. Генерируем конечно зенкой)
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)