NiFi EL Как мне получить подстроку "до" определенной длины? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть это выражение для печати первых N символов содержимого файла потока. Проблема в том, что длина содержимого меньше N. Какой хороший способ сказать «до первых N символов». То есть я не получу ошибку индекса за пределами границ, когда размер меньше N.

${incoming_content.0:substring(0,100)}

Здесь мой N = 100

Спасибо.

1 Ответ

0 голосов
/ 05 октября 2019

Если содержимое ваших потоковых файлов не слишком велико, вы можете использовать ExtractText для преобразования содержимого потокового файла в качестве атрибута, а затем использовать UpdateAttribute процессор для запуска следующей логики

${incoming.0:length():le(100):ifElse(${incoming.0},${incoming.0:substring(0,100)})}

, который по существу проверяет, меньше ли длина содержимого файла потока (в атрибуте), равной 100, если true, возвращает всю строку как есть, иначе возвращает подстроку длиной до 100 символов

...