Поиск-замена нескольких вариантов искомых слов

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Здравствуйте!
Может кто подсказать как реализовать следующее?
Есть несколько вариантов написания цифр словами, к сожалению бывает так что одна и та же цифра ( Например : 18, может быть написана в коде несколькими вариантами текста - восeMHадцаTь, BoceMнадцаTь, BoceмнадцаTb и т.к. далее. Нужно сделать замену всех этих вариантов написания на цифру 18. Пытался реализовать это следующим образом - через экшен "обработка текста" - поиск-замена брался один вариант написания и заменялся на цифру 18, в итоге таких экшенов получается большое количество, хотелось бы узнать как можно сделать поиск по нескольким вариантам написания, что бы они все заменялись на нужную цифру.
 

sof

Client
Регистрация
15.04.2013
Сообщения
831
Благодарностей
185
Баллы
43
Проще заказать снипет на сишарпе который будет делать это в один шаг и ложить готовый результат в переменную.

Обратись к LexxWork или к Radzhab
 

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
  • Спасибо
Реакции: serg32

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Уххх...Страшная статейка)
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 480
Благодарностей
5 917
Баллы
113
Здравствуйте!
Может кто подсказать как реализовать следующее?
Есть несколько вариантов написания цифр словами, к сожалению бывает так что одна и та же цифра ( Например : 18, может быть написана в коде несколькими вариантами текста - восeMHадцаTь, BoceMнадцаTь, BoceмнадцаTb и т.к. далее. Нужно сделать замену всех этих вариантов написания на цифру 18. Пытался реализовать это следующим образом - через экшен "обработка текста" - поиск-замена брался один вариант написания и заменялся на цифру 18, в итоге таких экшенов получается большое количество, хотелось бы узнать как можно сделать поиск по нескольким вариантам написания, что бы они все заменялись на нужную цифру.
Как вариант привести исходный тект к одному регистру - действие Обработка текста>ToUpper ил ToLower, и потом выполнить замену.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
Как вариант привести исходный тект к одному регистру - действие Обработка текста>ToUpper ил ToLower, и потом выполнить замену.
Прикол в том что, слова "восeMHадцаTь, BoceMнадцаTь, BoceмнадцаTb" serg32 написал "килиллицолатиницей", если так и задумано, то Ваш вариант ему не подойдет. Если же только меняется регистр, то да. А можно проще:
Экшен Обработка текста > Замена
Что заменить (Regex): (?i)восемнадцать
На что заменить: 18
Что заменять: Все
(?i) перед регулярным выражением - это "не учитывать регистр".
 
  • Спасибо
Реакции: Hannes

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
792
Баллы
113
var cheto = "BoceмнадцаTb";
var nechto = "З3,аa,АA,ВB,сc,СC,еe,ЕE,НH,кk,КK,МM,оo,ОO,рp,РP,ТT,хx,ХX,уy,ьb".Split(',').Select(p=>new {Key=p[1], Value=p[0]}).ToDictionary(key=>key.Key, value=>value.Value);
var nechto2 = "0.ноль,1.один,2.два,3.три,4.четыре,5.пять,6.шесть,7.семь,8.восемь,9.девять,10.десять,11.одиннадцать,12.двенадцать,13.тринадцать,14.четырнадцать,15.пятнадцать,16.шестнадцать,17.семнадцать,18.восемнадцать,19.девятнадцать,20.двадцать,30.тридцать,40.сорок,50.пятьдесят,60.шестьдесят,70.семьдесят,80.восемдесят,90.девяносто,100.сто,200.двести,300.триста,400.четыреста,500.пятсот,600.шестьсот,700.семьсот,800.восемьсот,900.девятьсот,1000.тысяча".Split(',').Select(p=>new {Key=p.Split('.')[1], Value=p.Split('.')[0]}).ToDictionary(key=>key.Key, value=>value.Value);
var norm = new StringBuilder();
cheto.ToList().ForEach(fu=>norm.Append((nechto.Keys.Contains(fu))?nechto[fu]:fu));
var normnorm = norm.ToString().ToLower();
if(nechto2.Keys.Contains(normnorm))
return nechto2[normnorm];
 
Последнее редактирование:
  • Спасибо
Реакции: serg32 и sof

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Так и есть , текст написан на половину кириллицей на половину латиницей. Поэтому и получается что на одну цифру может быть несколько вариантов написания подобным текстом.
 

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