|
Выбрать только буквы и цфры | ☑ | ||
---|---|---|---|---|
0
Zixxx
12.04.12
✎
07:12
|
Как менее затратно по производительности преобразовать строку с различным набором символов в строку содержащей только Русски, Английские буквы и цифры. Например строку: Б*Я)D-Z/0+9 преобразовываем в БЯDZ09
Если делать тупо перебором с контролем кода символа то это очень долго, нужно вариант значительно быстрее. |
|||
1
Wobland
12.04.12
✎
07:13
|
СтрЗаменить(стр, "(", "");
... |
|||
2
Molinor
12.04.12
✎
07:14
|
Регулярным выражением, думаю, что получится. Только я их составлять не умею.
|
|||
3
Cube
12.04.12
✎
07:15
|
(1) +1
|
|||
4
Рэйв
12.04.12
✎
07:18
|
Стр="";
Для н=1 по СтрДлина(Слово) цикл Сим=Сред(Слово,1,н); Если Найти("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",Врег(Сим))>0 Тогда Стр=Стр+Сим; КонецЦикла; Сообщить(Стр); |
|||
5
Рэйв
12.04.12
✎
07:19
|
+..КонецЕсли забыл:-)
|
|||
6
Zixxx
12.04.12
✎
07:34
|
(4) Перебор по символьно, найти тоже не фонтан...
|
|||
7
Рэйв
12.04.12
✎
07:35
|
(6)Более оптимально не придумаешь. все равно перебирать придется.
|
|||
8
Рэйв
12.04.12
✎
07:35
|
не одно так другое.
|
|||
9
DimVad
12.04.12
✎
07:46
|
(7) Перебор по символьно в таких языках, как 1С действительно не самое быстрое решение. Мне кажется, самое оптимальное - регулярные выражения (будут вызываться функции, написанные на С). Есть еще вариант - довольно извращенческий - написать свою функцию на С#, например. Чем плохо:
1. Надо будет таскать с собой лишнюю библиотеку. 2. Надо будет писать функцию для одной разовой задачки. Вывод : если уважаемый ТС решит эту задачу через регулярные выражения - хорошо будет. А если еще и напишет свое решение здесь - хорошо будет и нам... |
|||
10
DimVad
12.04.12
✎
07:48
|
Ну смотрите, я открыл в и-нете описание шаблонов по рег. выр. - "\d Соответствует цифре. То же, что и [0-9]". "[a-z] Диапазон символов. Соответствует любому символу в указанном диапазоне. Например, "[1-5]" соответствует числам от 1 до 5". Осталось понять, как это запустить в 1С.
|
|||
11
КМ155
12.04.12
✎
08:03
|
(10) это редкостное шаманство:
RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.Pattern = "(\{\w\})"; Результат = RegExp.Exec(Строка); Пока НЕ Результат = Неопределено Цикл Сообщить(Результат[1]) Результат = RegExp.Exec(Строка); КонецЦикла |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |