Действия раздела «Строка»
Если пусто
Section titled “Если пусто”Значок в палитре: ∅→a · даёт: текст · раздел «Строка» · default-if-empty · начинает схему
Считает пустотой отсутствие элемента, null и пустую строку; строка из пробелов сохраняется.
Фраза на фигуре у только что поставленного шага: если пусто, подставить значение
Пустотой считается отсутствие элемента, null и пустая строка. Строка из пробелов пустой не считается и проходит как есть.
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Что проверить (Значение) | да | текст | Проверяемый текст. |
| Чем заменить пустоту (По умолчанию) | да | текст | Что вернуть вместо пустоты. |
| Имя | Что на нём окажется |
|---|---|
| Значение | — |
Склеить
Section titled “Склеить”Значок в палитре: a·b · даёт: текст · раздел «Строка» · join
Склеивает список в одну строку через разделитель.
Фраза на фигуре у только что поставленного шага: склеить в одну строку без разделителя
Обратное действие — «Разбить на части».
Разделителем часто служит OR — так собирают выражение условия для кода ПЛК.
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Значения | да | текст | — |
| Имя | Что на нём окажется |
|---|---|
| Строка | — |
Настройки
Section titled “Настройки”Разделитель — настройка разделитель, по умолчанию пусто
Например « OR » для выражения условия. Перевод строки — {перенос}, табуляция — {таб}.
Разбить на части
Section titled “Разбить на части”Значок в палитре: a|b · даёт: список · раздел «Строка» · split-text · начинает схему
Разбивает текст на части по разделителю; со вторым разделителем — на строки с колонками.
Фраза на фигуре у только что поставленного шага: разбить на части по «,»
Заведён ради GAP.Afas.GetCauseEffectC_condition: список «силовых» типов приходит из ячейки строкой «Дымовой|Шаблон1|Шаблон2, Тепловой» — пункты через запятую, в пункте тип и его шаблоны через черту.
Пробелы по краям частей обрезаются, пустые части пропускаются — так разбирает GAP.
Со вторым разделителем каждая часть становится строкой с колонками, и пункт ищут теми же «Взять N-й» и «Найти», что и объекты: условие «колонка 1 равно type».
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Текст | да | текст | Текст с разделителями: «Дымовой, Тепловой». |
| Имя | Что на нём окажется |
|---|---|
| Части | Части по порядку; с разделителем внутри части — строки с полями «колонка 1», «колонка 2»… |
Настройки
Section titled “Настройки”Между частями — настройка между частями, по умолчанию ,
Чем части отделены друг от друга. Перевод строки — {перенос}, табуляция — {таб}.
Внутри части — настройка внутри части, по умолчанию пусто
Задан — каждая часть становится строкой с полями «колонка 1», «колонка 2»…: у «Дымовой|Шаблон1» колонка 1 — «Дымовой», колонка 2 — «Шаблон1». Пусто — части остаются текстом.
Собрать текст
Section titled “Собрать текст”Значок в палитре: {…} · даёт: текст · раздел «Строка» · build-text · начинает схему
Собирает текст: {имя} — место для значения, вход блока либо поле объекта. {TAG}_qlty → P094TI5119_qlty.
Фраза на фигуре у только что поставленного шага: собрать «…»
Входы действие не объявляет заранее — их называет сам образец: каждое {имя} становится входом. Поэтому в схеме видно, что куда подключено, а не «1», «2», «3».
Это закрывает дыру, из-за которой GetCombinedString(str1, str2, str3, str4) не собирался вовсе: в один вход идёт одна связь, и четыре аргумента в «Склеить» было не завести.
Имя в скобках, к которому не подключён свой вход, читается как поле пришедшего объекта. Без этого имя ФБ из GetFbNameByAlias — три поля одного шаблона — собиралось четырьмя фигурами вместо одной.
Постоянных строк-входов нет. Входы появляются сами — по каждому {имя} в образце.
| Имя | Что на нём окажется |
|---|---|
| Строка | Строка, собранная по тексту с подстановками. |
Настройки
Section titled “Настройки”Текст с подстановками — настройка образец, обязательна, по умолчанию {значение}, заготовка: стёртая не возвращается
Текст, в котором {имя} — место для значения: «{TAG}_qlty» даёт «P094TI5119_qlty». Имя без своего входа читается как поле пришедшего объекта. Это не регулярное выражение: образцы — у «Заменить по образцу». Сама скобка пишется дважды: {{ и }}. Перевод строки — {перенос}, табуляция — {таб}.
Если значения нет — настройка если значения нет, по умолчанию ничего не собирать
| Значение | Пояснение под пунктом |
|---|---|
ничего не собирать | объект не нашёлся или шаг выше ничего не дал — дальше пустота |
оставить место пустым | собрать строку с пустым местом, как делает GAP |
Объект — настройка объект
Чьи поля подставлять: пришедшего по связи объекта, строки, для которой считается ячейка, или её ПЛК.
| Значение | Пояснение под пунктом |
|---|---|
эта строка | колонки строки, для которой считается ячейка: Units, TAG… |
ПЛК этой строки | опции ПЛК этой строки: SplitRegex, ComposeRegex, defaultTAMap… |
Заменить
Section titled “Заменить”Значок в палитре: a→b · даёт: текст · раздел «Строка» · replace-text · начинает схему
Заменяет в тексте одно на другое: подстрокой либо по регулярному выражению.
Фраза на фигуре у только что поставленного шага: заменить … на пусто
Искомое и замена бывают известны заранее — тогда их пишут настройкой, — а бывают приходят из той же ячейки, что и сам текст: в GAP так устроен TransformString(input, pattern, replacement).
В палитре два пункта на одно действие: «Заменить» и «Заменить по образцу». Это тот же вид блока с заранее выбранным видом замены — сохранённые схемы от этого не меняются.
Пункты палитры
Section titled “Пункты палитры”| Пункт | Что делает | Встаёт с настройками |
|---|---|---|
| Заменить | Заменяет в тексте одно на другое: подстрокой либо по регулярному выражению. | по умолчанию |
| Заменить по образцу | Заменяет по регулярному выражению; на группы в замене ссылаются $1, $2. | вид замены = образец |
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Значение | да | текст | — |
| Что | нет | текст | Что искать значением. Не подключён — берётся настройка. |
| На | нет | текст | Чем заменить значением. Не подключён — берётся настройка. |
| Имя | Что на нём окажется |
|---|---|
| Строка | Текст после замены. |
Настройки
Section titled “Настройки”Что заменить — настройка что
Пусто — искомое приходит по входу «Что».
На что — настройка на
Пусто — вхождения просто убираются. В виде «образец» на группы ссылаются $1, $2 — не \1. Перевод строки — {перенос}, табуляция — {таб}. Подключён список — текст на каждое значение.
Вид замены — настройка вид замены, по умолчанию текст
| Значение | Пояснение под пунктом |
|---|---|
текст | ищется как есть, заменяются все вхождения |
образец | регулярное выражение; в замене на группы ссылаются как $1, $2 |
Часть пути
Section titled “Часть пути”Значок в палитре: /… · даёт: текст · раздел «Строка» · path-part · начинает схему
Берёт из пути к файлу имя файла, имя без расширения, расширение или папку.
Фраза на фигуре у только что поставленного шага: взять из пути имя файла
Заведён ради MakeThresholdFeedbackText и MakeModuleDiagnosticText: GAP берёт путь шаблона через Path.GetFileNameWithoutExtension. Без этого шага имя файла вынималось образцом ^.*[\\/]|\.[^.\\/]*$ — инженер такое не напишет и, увидев на схеме, не прочтёт.
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Путь | да | текст | Полный путь к файлу — обычно из шага выше. |
| Имя | Что на нём окажется |
|---|---|
| Часть | Выбранная часть пути; её нет — пустая строка. |
Настройки
Section titled “Настройки”Какая часть — настройка какая часть, по умолчанию имя файла
| Значение | Пояснение под пунктом |
|---|---|
имя файла | C:\Шаблоны\Base.jsm → Base.jsm |
имя без расширения | C:\Шаблоны\Base.jsm → Base |
расширение | C:\Шаблоны\Base.jsm → .jsm |
папка | C:\Шаблоны\Base.jsm → C:\Шаблоны |
Подставить по списку
Section titled “Подставить по списку”Значок в палитре: ≡→ · даёт: текст · раздел «Строка» · lookup-table · начинает схему
Таблица готовых ответов: значение → ответ, первая подошедшая строка сверху. Без шагов — для перевода кодов.
Фраза на фигуре у только что поставленного шага: подставить по списку — список пуст
Это то, что в GAP написано switch’ем: Дымовой→0, Тепловой→1, Пламени→2. Развилкой такое не пишется — она задаёт один вопрос и даёт два ответа, а здесь ответов столько, сколько строк.
Список правится в самом шаге и виден целиком — ради этого действие и заведено. Строки переставляются, у каждой свой вид сравнения.
Признаков у таблицы бывает несколько — столбцы, каждый со своим входом, и строка подходит, когда сошлись все её непустые клетки. Ответ — текст с местами подстановки: {tagFeedback}_qlty. Оба ради GetTagFeedback: его switch «тип × качество» собирался в одиннадцать фигур.
Строка отдаёт и несколько ответов — отдельными столбцами. Следующий шаг берёт нужный столбец как «шаг 2 · на что».
Строки бывают и значением: вход «Пары» принимает то, что дал «Разобрать на пары» или словарь объекта. Связь сильнее вписанной таблицы.
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Значение | да | текст | То, что переводят по списку. |
| Пары (Список) | нет | словарь | Строки списка парами: от «Разобрать на пары» или словарь объекта. Не подключён — берётся таблица на фигуре. |
| Имя | Что на нём окажется |
|---|---|
| Значение | То, во что превратилось пришедшее. |
Разобрать на пары
Section titled “Разобрать на пары”Значок в палитре: a=b · даёт: пары · раздел «Строка» · split-pairs · начинает схему
Разбирает текст вида «1=Открыт|0=Закрыт» на пары «ключ → значение» для «Подставить по списку».
Фраза на фигуре у только что поставленного шага: разобрать на пары: «|» между парами, «=» между ключом и значением
Заведён ради GAP.ScadaProjectBase.General.GetMappedValue: список соответствий приходит из ячейки строкой 1=Открыт|0=Закрыт|<any>=?, у каждой ячейки свой.
Про особые ключи GAP (<any>, <empty>, <null>) шаг не знает: для него это ключи как ключи. Что они значат, знает «Подставить по списку».
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Текст | да | текст | Текст с парами: «1=Открыт|0=Закрыт». |
| Имя | Что на нём окажется |
|---|---|
| Пары | Словарь «ключ → значение»: по одному на каждый пришедший текст. |
Настройки
Section titled “Настройки”Между парами — настройка между парами, по умолчанию |
Чем пары отделены друг от друга.
Ключ от значения — настройка ключ от значения, по умолчанию =
Чем в паре ключ отделён от значения.
Негодный текст — настройка негодный текст, по умолчанию оборвать
Пустой текст, кусок без разделителя или с двумя — как GAP, негоден весь текст.
| Значение | Пояснение под пунктом |
|---|---|
оборвать | счёт обрывается и называет кусок |
пустые пары | пар нет — отвечает «остальное» списка |
Убрать повторы
Section titled “Убрать повторы”Значок в палитре: a≠a · даёт: значения · раздел «Строка» · distinct
Оставляет только разные значения: «mb_p071» и «MB_P071 » — одно, пустые выбрасываются.
Фраза на фигуре у только что поставленного шага: убрать повторы
Сравнение как у остальных действий: без учёта регистра и без пробелов по краям — mb_p071 и MB_P071 одно и то же. Пустые значения выбрасываются.
Отдельное действие, а не настройка «Взять поле»: повторы убирают из любого списка — и из частей строки после «Разбить», и из значений поля, и из пришедшего вызовом схемы.
| Строка | Обяз. | Принимает | Что это |
|---|---|---|---|
| Значения | да | текст | Значения, среди которых остаются только разные. |
| Имя | Что на нём окажется |
|---|---|
| Без повторов | Те же значения без повторов; пустые выброшены. |
Настройки
Section titled “Настройки”Порядок — настройка порядок, по умолчанию как пришли
| Значение | Пояснение под пунктом |
|---|---|
как пришли | в порядке прихода: вставили строку в книгу — порядок поехал |
по алфавиту | по алфавиту, числа по значению: MB_2 раньше MB_10 |