Имя: Пароль:
1C
1С v8
Подскажите решение, найти ширину и высоту из текста Евро конверт 85х170
0 Храбрый
 
21.03.14
12:34
Занимаюсь конвертацией.
Есть входящие форматы:
- Евро конверт 85х170
- Middle 140x195
- Больше большой тройник 123х226
- Сумка DE 115х145х65 (тут только ширину и высоту, третий параметр не нужен.)
- 8,5х18,5 см (тут видимо если запятую встретим, то умножить на 10, чтобы перевести в мм)
- Малый гигант 200х277
- Мини 70х70

х - это русская буква х.

Нужно вытащить из них ширину (в мм) и высоту (в мм) и формат товара (Middle, Евро конверт, Мини, Больше большой тройник и т.д.).

2 алгоритма на уме, оба не нравятся.

1. алгоритм
Найти "х" справа и слева брать цифры и запятую пока не закончатся. Боюсь чтоб буква х будет встречаться в форматах, тогда алгоритм не сработает.

2. алгоритм.
Разбить входящий формат на слова, в качестве разделителя выбрать пробел.
- Евро конверт 85х170, получим
Евро
конверт
85х170
Если разбитое слово начинается с цифры, то это ширина с высотой, разбиваем их по "х".

Подскажите красивое решение.
1 Базис
 
naïve
21.03.14
12:39
Функция - параметр строка, возвращает ширину и высоту в мм, разделённую десятичной точкой (или строку типизированного формата ?).

Код можно сделать в Excel, выгрузив туда исходную табличку и проверив все реально существующие в источнике значения.
2 Asmody
 
21.03.14
12:42
(.+)\s(\d+)[хx](\d+)
3 Храбрый
 
21.03.14
12:43
(1) Функция параметр строка. Возвращает.
Ширину в мм, Высоту в мм, Формат.
4 Храбрый
 
21.03.14
12:43
(2) Это с помощью регулярных выражений?
5 Asmody
 
21.03.14
12:45
с запятыми
(^|(.+)\s)([\d,]+)[хx]([\d,]+)
6 Asmody
 
21.03.14
12:47
(4) да. можно или VBScript.RegExp, или компоненту orefkov https://snegopat.ru/scripts/doc/trunk/rex/readme.markdown
7 Храбрый
 
21.03.14
12:47
(6) Спасибо, сейчас попробую
8 Asmody
 
21.03.14
12:48
9 Храбрый
 
21.03.14
12:50
(8) Это вообще отлично! Спасибо