Страница 1 из 1
Кавычки и пробелы в переменных и выражениях
Добавлено: 13 фев 2016, 17:16
imho
Подскажите как правильно записать следующее выражение
Код: Выделить всё
same => n,Set(operator-info=${IF($["${operator}"!=""]?[${operator}, ${region}])})
Дело в том что если в переменной
operator встретятся кавычки, то будет синтаксическая ошибка и WARNING
(syntax error: syntax error, unexpected '<token>', expecting $end)
Дополнительный вопрос как можно в аргументах функции IF использовать пробелы, например
Код: Выделить всё
same => n,Set(operator-info=${IF($["${operator}"!=""]? [${operator}, ${region}])})
пробел в начале второго аргумента будет выкинут
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 13 фев 2016, 20:01
ded
Что-то там у Вас каша. Я ничего не понял.
Разбейте сложную логику выражения на несколько простых операндов, вставляйте везде проверки NoOp, так и разберётесь.
Кавычки = спецсимволы, не надо их использовать в переменной "${operator}. Если это имя и фамилия, то запишите это хоть с пробелом. Как в конечном виде будет выглядеть содержимое переменной operator-info можно только догадываться. Это будет что-то типа Vasilij Pechkin, Voronezh obl. ?? Так это задумывается?
NoOp(operator-info is ${operator-info})
operator-info is Vasilij Pechkin, Voronezh obl.
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 14 фев 2016, 20:08
imho
Попробую переформулировать вопрос: как можно экранировать специальные символы в переменных? Или как использовать переменные чтобы спецыальные символы в переменных не влияли на вычисление выражения?
ded писал(а):Разбейте сложную логику выражения на несколько простых операндов, вставляйте везде проверки NoOp
Понял, из выражения не достаточно очевидно где происходит ошибка. Тогда так:
это достаточно простое выражение?
Как его записать чтобы кавычки в переменной не приводили синтаксической ошибке?
Да, во входных данных всречаются кавычки, но мне хотелось бы чтобы программа не спотыкалась и спокойно справлялась с любыми. В данном выражении переменная просто сравнивается с пустой строкой.
Очень не хочется приводить конкретные данные, ибо вопрос не в том как бы записать имя и фамилию без кавычек. Допустим operator = ПАО "Мобильные ТелеСистемы", В operator-info хотелось увидеть такую строчку:
Код: Выделить всё
пробел[ПАО "Мобильные ТелеСистемы", Приморский край]
Так вот функция IF тоже не без сюрпризов:
Код: Выделить всё
IF(условие? <=вот_этот_пробел_в_начале_аргумента_исчезает)
PS. Вот что-то я не могу даже приблизительно найти как это должно правильно записываться…
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 14 фев 2016, 22:24
Samael28
Старайтесь избегать пустых строк
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 14 фев 2016, 22:42
ded
imho, я вижу (это моё IMHO), что пытаетесь двухмерный массив записывать как одномерный
Код: Выделить всё
[ПАО "Мобильные ТелеСистемы", Приморский край]
да ещё и со спецусловиями: пробелами и кавычками в переменных. Может бы лучше подумать об обработке через agi + mysql? Точно знаю - гибкости и возможностей будет больше.
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 14 фев 2016, 23:40
zzuz
Видимо вопрос стоит в том , что нужно экранировать спецсимволы в строках. Хотя тут без разницы где. Делать это нужно как и везде , через обратный слэш .
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 14 фев 2016, 23:43
whoim
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 15 фев 2016, 22:20
imho
Почему-то в $[…] экранирование не помогает
Код: Выделить всё
same => n,NoOp($[${QUOTE(${operator})}!=""])
приводит к тому-же результату, или я неправильно экранирую?
результатом ${QUOTE(${operator})} будет "ПАО \"Мобильные ТелеСистемы\"" — вроде всё верно, но $[…] игнорирует эти слеши
PS. Да, возможно в данном случае поможет удаление кавычек из переменной, если конечно допустить что строка, стостоящая из одной или более кавычек — это пустая строка.
PPS. На данный момент вот такой вариант оказался наиболее рабочим:
да, я пробовал его раньше, но видимо где-то ошибался
также в моём случае подходит
поскольку переменные operator и region устанавливает следующий код
Код: Выделить всё
same => n,MySQL(Fetch fetchid ${resultid} operator region)
Re: Кавычки и пробелы в переменных и выражениях
Добавлено: 16 фев 2016, 02:53
whoim
Я предполагал, что экранировать будете на этапе присвоения значения. Но с len тож отлично вышло!