Платформа 3V/Выражение/Расчет выражений/Работа со строками: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 52: Строка 52:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div>
 
</div>
 +
 +
<div align="right">'''''Реализовано в [[Описание_релизов/0.42.0_-_Уильям_Уоллес | версии 0.42]]'''''</div>
 +
 +
'''JPath()'''
 +
Для того, чтобы вывести требуемые свойства из строки вида json следует использовать функцию JPath(<json>, <jpath>, <expression>), где
 +
*json - объект json, из которого следует втянуть значения
 +
*jpath - свойства json, значения которых будут выведены в результате. Задаются в строковом виде, либо в коллекции строк
 +
*expression - объект json, из которого следует втянуть значения
 +
<div style="width:700px;>
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  "expression": "JPath(ToString([0]), '$.rhumbs[*].'+[1],true)",
 +
  "operandValues": [
 +
    {
 +
      "id": 0,
 +
"value": "{'startPoint':[58.37194012413617,60.662785146257235],'skip':1,'rhumbs':[{'rhumb':'NW','angle':75,'distance':100},{'rhumb':'SW','angle':0,'distance':51},{'rhumb':'SW','angle':56,'distance':128},{'rhumb':'NW','angle':47,'distance':253},{'rhumb':'SE','angle':81,'distance':299}],'turningPointsIds':['7917fe71-372c-41d0-8ffc-6d97931e5a4e','24e963a2-797f-4060-8e6d-07b002e97b8b','88161be8-860e-4b48-ab3e-9c19dc51f948','5345d652-d0e6-45a1-b846-ee1d5add7378','cedbbd41-c214-448e-b07f-5f422ffff463'],'bindLineId':'cf1fa88b-669f-404f-9490-5488d2b980aa'}"
 +
    },
 +
{
 +
"id": 1,
 +
"value": "['rhumb', 'angle']"
 +
}
 +
  ]
 +
}
 +
</syntaxhighlight>
 +
</div>
 +
 +
 +
Результат:
 +
<syntaxhighlight lang="JSON" line>
 +
[
 +
  "NW",
 +
  "SW",
 +
  "SW",
 +
  "NW",
 +
  "SE"
 +
]
 +
</syntaxhighlight>

Версия 08:33, 23 декабря 2021

Общие функции работы со строками

  • Concatenate([разделитель:строка], [строка 1], ..., [строка N]) - объединение строк
  • IndexOf([строка, в которой ищем], [строка, которую ищем]) - возвращает индекс первого символа строки, которую ищем или -1, если не найдена
  • Length([строка]) - возвращает длину строки
  • Letter([целое число - индекс латинской буквы]) - возвращает букву от A до Z
  • Padleft([строка], [ожидаемая длина строки], [символ "замощения" слева])
  • Substring([строка], [начальный индекс, начиная с 0], [кол-во символов])

Объединение и разбиение строк

  • Split([0], [1]) - Разбивает строку на коллекцию строковых элементов через разделитель
  • Join([0], [1]) - Объединяет коллекцию через разделитель в строку
Реализовано в версии 0.40

Replace() Заменять заданный текст можно с помощью функции Replace(<Source_String>, <Find_String>, <Replaced_String>), где

  • Source_String - текст в котором требуется заменить строку
  • Find_String - строка, которую требуется заменить
  • Replaced_String - строка, которой будет заменена Find_String
1 {
2   "expression": "Replace('хо-хо', 'о', 'е')"  
3 }

Format() Чтобы вставить в текст значения(??) следует использовать функцию формата Format(<Source_Template>, <Collection_Values>) или Format(<Source_Template>, <Value0>, <Value1>, <Value2>...), где

  • Source_Template - шаблон для вставки, где вставка значения обозначается {0}
  • Value - вставляемое значение. Счётчик идентификатора для значения начинается с 0.
1 {
2   "expression": "Format('{0} + {0} = {1}', '2', '5')"  
3 },
4 {
5   "expression": "Format('{0} + {0} = {1}', ToList('2', '5'))"  
6 }

Trim() Для того, чтобы убрать пробелы в начале и в конце строки следует использовать функцию Trim(<Source_String>), где

  • Source_String - строка, в которой обрезаются пробелы в начале и в конце
1 {
2   "expression": "Trim('       пробелы между словами будут, а по краям нет       ')"
3 }
Реализовано в версии 0.42

JPath() Для того, чтобы вывести требуемые свойства из строки вида json следует использовать функцию JPath(<json>, <jpath>, <expression>), где

  • json - объект json, из которого следует втянуть значения
  • jpath - свойства json, значения которых будут выведены в результате. Задаются в строковом виде, либо в коллекции строк
  • expression - объект json, из которого следует втянуть значения
 1 {
 2   "expression": "JPath(ToString([0]), '$.rhumbs[*].'+[1],true)",
 3   "operandValues": [
 4     {
 5       "id": 0,
 6 "value": "{'startPoint':[58.37194012413617,60.662785146257235],'skip':1,'rhumbs':[{'rhumb':'NW','angle':75,'distance':100},{'rhumb':'SW','angle':0,'distance':51},{'rhumb':'SW','angle':56,'distance':128},{'rhumb':'NW','angle':47,'distance':253},{'rhumb':'SE','angle':81,'distance':299}],'turningPointsIds':['7917fe71-372c-41d0-8ffc-6d97931e5a4e','24e963a2-797f-4060-8e6d-07b002e97b8b','88161be8-860e-4b48-ab3e-9c19dc51f948','5345d652-d0e6-45a1-b846-ee1d5add7378','cedbbd41-c214-448e-b07f-5f422ffff463'],'bindLineId':'cf1fa88b-669f-404f-9490-5488d2b980aa'}"
 7     },
 8 {
 9 "id": 1,
10 "value": "['rhumb', 'angle']"
11 }
12   ]
13 }


Результат:

1 [
2   "NW", 
3   "SW",
4   "SW",
5   "NW",
6   "SE"
7 ]