Имя: Пароль:
1C
1С v8
Сравнение строк с учетом раскладки
,
0 m_roose
 
11.06.14
13:24
Ребят, не подскажете, можно ли как то сравнивать две строки, игнорируя так скажем схожие визуально символы английской и русской раскладки? ну т.е. есть например "K3NNB3A", символ B можно написать как по русски, так и английски. Как системе понять, что две визуально одинаковые строки должны быть равны, не важно какой раскладкой их вводили? Может есть уже какие то готовые решения? или помогите, направьте пожалуйста, в какую сторону думать..
1 Godofsin
 
11.06.14
13:25
юзеры задолбали с "у меня пароль не вводится!!!"? =)
2 lamme
 
11.06.14
13:25
программно прописать ?
3 m_roose
 
11.06.14
13:26
(1) неет( нужно две схожие номенклатуры искать и объединять в одну, а юзеры на вводили с разной раскладкой(
4 m_roose
 
11.06.14
13:27
(2) каким алгоритмом не направите? думаю полюбому есть уже какие то решения, но у меня не получилось ничего найти(
5 Fragster
 
гуру
11.06.14
13:27
сделай массив замен и приводи сравниваемые строки к одному варианту
6 Maxus43
 
11.06.14
13:28
ПОДОБНО можно поюзать в запросе
7 Godofsin
 
11.06.14
13:28
(5) +1 а потом ПОДОБНО
8 lamme
 
11.06.14
13:29
(4) -> (6)
9 m_roose
 
11.06.14
13:30
думаю ПОДОБНО не вариант..
10 Йохохо
 
11.06.14
13:35
(9) перезапиши все строки приводя к одному правильному варианту раскладки, а потом уже думай как их сравнить
11 m_roose
 
11.06.14
13:54
(10) ну вот вопрос в этом и есть, как перезаписать? создавать какой то массив соответствий? и проверять каждый символ на него или еще как..
12 Fragster
 
гуру
11.06.14
14:05
Соответствие = Новый Соответствие();
Соответствие .Вставить("A","А");
,,,,

ПриведеннаяСтрока1 = Строка1;
ПриведеннаяСтрока2 = Строка2;

Для каждого КлючИЗначение Из Соответствие Цикл
  ПриведеннаяСтрока1 = СтрЗаменить(ПриведеннаяСтрока1, КлючИЗначени.Ключ,КлючИЗначение.Значение );
  ПриведеннаяСтрока2 = СтрЗаменить(ПриведеннаяСтрока1, КлючИЗначени.Ключ,КлючИЗначение.Значение );
КонецЦикла;

Возврат ПриведеннаяСтрока1 = ПриведеннаяСтрока2
13 Fragster
 
гуру
11.06.14
14:06
ну там пару опечаток поправить и можно в бой
14 zulu_mix
 
11.06.14
14:33
(12) гениально. линейно заполнить соответствие а потом еще в цикле замену делать. а сразу линейно заменить не?
15 m_roose
 
11.06.14
14:37
(12) спасибо
16 Fragster
 
гуру
11.06.14
14:54
(14) можно и так. просто тут можно запилить хранение пар в БД, например. типа модульность и вся фигня. все равно это времени по сравнению с остальной работой почти не отнимет, если конечно сотни тысяч проверок не делать.
17 zulu_mix
 
11.06.14
15:57
(16) а собрать 2 строки соответствия русских-латинских букв и заменить через найти обходя посимвольно анализируемую строку?
18 Segate
 
11.06.14
16:20
(15) вангую следующий вопрос: " теперь номенклатура типо Adidas не ищется, потому что там а русские!!!!1111"