|
Перебор букв и цифр | ☑ | ||
---|---|---|---|---|
0
Margo95
09.01.21
✎
06:04
|
Добрый день, есть код, который должен перебирать символы, есть различное оформление, а - русская буква, А - английская буква, так же учитывается , что 0 похож на русскую и английскую букву О, результат обработки должен быть такой
APO APo AP0 ApO Apo Ap0 aPO aPo aP0 apO apo ap0 но он выводит намного больше "результатов", подскажите в чем проблема, пожалуйста, код ниже &НаКлиенте Процедура Команда1(Команда) СписокПохожестей = Новый Массив; СписокПохожестей.Добавить("АаAa"); СписокПохожестей.Добавить("РрPp"); СписокПохожестей.Добавить("ОоOo0"); ВходноеСлово = "АРО"; ПеребратьСимволВСлове(СписокПохожестей,ВходноеСлово,СтрДлина(ВходноеСлово)); КонецПроцедуры Процедура ПеребратьСимволВСлове(СписокПохожестей, Знач ВходноеСлово, Знач НомерСимвола) Если НомерСимвола<1 Тогда Сообщить(ВходноеСлово); Возврат; КонецЕсли; ПроверяемыйСимвол = Сред(ВходноеСлово,НомерСимвола,1); Для Каждого СтрокаПохожести из СписокПохожестей Цикл Если СтрНайти(СтрокаПохожести,ПроверяемыйСимвол)>0 Тогда ЛеваяЧастьСлова = Лев (ВходноеСлово,НомерСимвола-1); ПраваяЧастьСлова = Сред(ВходноеСлово,НомерСимвола+1); Для НомерВСтрокеПохожести = 1 по СтрДлина(СтрокаПохожести) Цикл ПеребратьСимволВСлове(СписокПохожестей,ЛеваяЧастьСлова+Сред(СтрокаПохожести,НомерВСтрокеПохожести,1)+ПраваяЧастьСлова,НомерСимвола-1); КонецЦикла; Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
Йохохо
09.01.21
✎
07:03
|
СтрНайти вообще не согласна с такими "похожестями"
а так "ЛеваяЧастьСлова+Сред(СтрокаПохожести,НомерВСтрокеПохожести,1)+ПраваяЧастьСлова,НомерСимвола-1" -> "Сред(СтрокаПохожести, 2),1)" всё переписать |
|||
2
Йохохо
09.01.21
✎
07:07
|
насчет похожестей наврал
|
|||
3
Margo95
09.01.21
✎
07:40
|
(1) если меняю "ЛеваяЧастьСлова+Сред(СтрокаПохожести,НомерВСтрокеПохожести,1)+ПраваяЧастьСлова,НомерСимвола-1" на вашу часть кода, то при нажатии на кнопку, просто закрывается предприятие и нужно перезапускать полностью 1с
|
|||
4
acht
09.01.21
✎
11:26
|
||||
5
asady
09.01.21
✎
11:36
|
Что-то похожее есть - допили под себя
Функция ЗаменитьЛатыньНаКирилицу(ТекстоваяСтрока) Лат = "AaBCcEeHKkMmnOoPpTuXxy"; Рус = "АаВСсЕеНКкМтпОоРрТиХху"; Результат = ТекстоваяСтрока; Для сч =1 по СтрДлина(Результат) Цикл тПоз = Найти(Лат,Сред(Результат,сч,1)); Если тПоз>0 Тогда Результат = СтрЗаменить(Результат,Сред(Лат,тПоз,1),Сред(Рус,тПоз,1)); конецЕсли; КонецЦикла; Возврат Результат; КонецФункции Функция ЗаменитьКирилицуНаЛатынь(ТекстоваяСтрока) Лат = "AaBCcEeHKkMmnOoPpTuXxy"; Рус = "АаВСсЕеНКкМтпОоРрТиХху"; Результат = ТекстоваяСтрока; Для сч =1 по СтрДлина(Результат) Цикл тПоз = Найти(Рус,Сред(Результат,сч,1)); Если тПоз>0 Тогда Результат = СтрЗаменить(Результат,Сред(Рус,тПоз,1),Сред(Лат,тПоз,1)); конецЕсли; КонецЦикла; Возврат Результат; КонецФункции |
|||
6
Margo95
09.01.21
✎
11:52
|
(4) немного не поняла, что сделала не так
(5) Видела данный вариант, но все равно спасибо) нашла ошибку, по какой причине не правильно отрабатывал код, дальше пытаюсь доработать) |
|||
7
Йохохо
09.01.21
✎
11:58
|
пакетным запросом вообще изи, оп чик декартово .. профит)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |