|
Формулы в строке | ☑ | ||
---|---|---|---|---|
0
EverGreenMouse
01.10.15
✎
20:42
|
Итак сабж. Есть формула в типе строка. Нужно вычленить переменные. То есть имеем строку "Х1+Х2+858*Х3". Как вычленить "Х с номером"? Вариант разложитьСТрокуВМассивПодстрок замечательный, но как разложить по нескольким разделителям (арифметическим знакам)???
|
|||
1
ДенисЧ
01.10.15
✎
20:47
|
Нужно написать грамматику и по ней конечный автомат парсинга.
|
|||
2
EverGreenMouse
01.10.15
✎
20:52
|
А существует ли поиск по маске в массиве строк?
|
|||
3
echo77
01.10.15
✎
20:53
|
А что надо? Вычислить()?
|
|||
4
EverGreenMouse
01.10.15
✎
20:53
|
надо распарсить строку на переменные)
|
|||
5
echo77
01.10.15
✎
20:53
|
(2) существуют регулярные выражения
|
|||
6
EverGreenMouse
01.10.15
✎
20:54
|
Вычислить() не надо. Задача только в отделении мух от котлет
|
|||
7
EverGreenMouse
01.10.15
✎
20:54
|
(5) через Сom объект?
|
|||
8
EverGreenMouse
01.10.15
✎
20:55
|
(5) RegExp = Новый COMОбъект("VBScript.RegExp") ???
|
|||
9
echo77
01.10.15
✎
20:55
|
(6) доработать разложитьстрокувмассивподстрок?
|
|||
10
EverGreenMouse
01.10.15
✎
20:56
|
(9) Каким образом? Добавить кучу Разделителей, не нахожу пока способа это сделать
|
|||
11
User_Agronom
01.10.15
✎
21:10
|
(0) Перебор строки по символам.
Задание начального уровня программирования. |
|||
12
User_Agronom
01.10.15
✎
21:13
|
Стр = "Х1+Х2+858*Х3";
Для каждого й = 1 по СтрДлина цикл Сим = Сред(Стр,й,1); имяпеременной = ""; Если Найти(Сим, "*/+-)(")>0 тогда Сообщить(ИмяПеременной) ИмяПеременной = ""; Иначе ИмяПеременной = Имяпеременной + Сим КонецЕсли КонецЦикла |
|||
13
User_Agronom
01.10.15
✎
21:13
|
Ошибочка вышла. Спешил.
Стр = "Х1+Х2+858*Х3"; имяпеременной = ""; Для каждого й = 1 по СтрДлина цикл Сим = Сред(Стр,й,1); Если Найти(Сим, "*/+-)(")>0 тогда Сообщить(ИмяПеременной) ИмяПеременной = ""; Иначе ИмяПеременной = Имяпеременной + Сим КонецЕсли КонецЦикла |
|||
14
EverGreenMouse
01.10.15
✎
21:25
|
(13) хм, то ли я дурак, то ли хз. При Вашей реализации получаю
Ожидается символ '=' Для каждого й <<?>>= 1 по СтрДлина цикл (Проверка: Толстый клиент (обычное приложение)) |
|||
15
1sanekmaloi1
01.10.15
✎
21:46
|
(14) Ну так напиши
Для й = 1 по СтрДлина(Стр) цикл |
|||
16
Фокусник
01.10.15
✎
22:18
|
(0) сначала все служебные символы заменить на один символ, потом по этому символу разделить на составляющие...
|
|||
17
Garykom
гуру
01.10.15
✎
22:20
|
(0)
1. Убрать все лишние, незначащие символы (пробелы и т.д.) 2. Составить список разделителей ("+", "*") 3. СтрЗаменить в цикле для каждого разделителя, меняем на разделитель строк 4. Цикл по строкам, если начинается с "X" то убираем этот "X" и остается номер 5. Далее делаем что нужно... |
|||
18
Garykom
гуру
01.10.15
✎
22:24
|
(17)+
2-й вариант еще проще, обычная работа с символами в строке 1. Цикл по символам 2. Если "X" то запоминаем что "X" в переменную, продолжаем цикл 3. Если "X" и текущий символ цифра то добавляем цифру к строковой переменной номера, Иначе если "X" и не цифра то получили номер, используем и обнуляем переменные, Иначе если не "X" то продолжаем цикл |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |