Метод настройки многострочных строк в YAML

Java

Иногда мы настраиваем текстовое описание в конфигурационном файле, в это время обычно есть два требования:

  1. Абзацы могут появляться в тексте, и есть надежда, что конфигурация должна быть написана в режиме абзаца, а также может появляться перенос абзаца при отображении и печати.
  2. Текст очень длинный, для удобства редактирования может быть написан по разделам в конфигурационном файле, но при отображении не любит обтекание абзацами в конфигурационном файле.

Проще говоря, это:

  1. Конфигурация и отображение строго вынесены по пунктам
  2. Настройка по абзацам, отображение не обязательно по абзацам

Допустим, нам нужно настроить такой кусок текста:

I am a coder.My blog is didispace.com.

Давайте посмотрим, как реализовать две вышеупомянутые ситуации:

Конфигурация и отображение строго вынесены по пунктам

В соответствии с этим требованием мы надеемся, что конфигурация и отображение будут перенесены в соответствии с предложением, которое выглядит следующим образом:

I am a coder.
My blog is didispace.com.

Способ 1: использовать напрямую\nобернуть

Пишите так:

string: "I am a coder.\n\
         My blog is didispace.com."

Окончательный вывод:

I am a coder.
My blog is didispace.com.

пройти через\nПереносить строку при отображении, настроив конец строки\Пусть эта строка продолжает писаться на новой строке (это должно быть там, если нет второй строки, в начале строки будет лишний пробел).

Уведомление: здесь для определения строк необходимо использовать двойные кавычки, одинарные кавычки использовать нельзя. Поскольку одинарные кавычки не поддерживаются\nЗавернутый.

Способ 2: Использование,|+,|-

В первом способе, по сути, мы добавили в текст несколько escape-символов, что на самом деле не удобно для чтения. В методе 2 будет введено несколько форм, более подходящих для чтения:

string: |
  I am a coder.
  My blog is didispace.com.

string: |+
  I am a coder.
  My blog is didispace.com.

string: |-
  I am a coder.
  My blog is didispace.com.

Например, выше есть три конфигурации, которые будут автоматически переносить строку в соответствии с разрывом строки, прописанным в конфигурации, но будут некоторые отличия в конце текста, некоторые добавят пустую строку, некоторые нет, а некоторые добавит две пустые строки. Конкретные инструкции заключаются в следующем:

  • |: Автоматический разрыв строки в тексте + добавление пустой строки в конце текста
  • |+: автоматический перенос строк в тексте + две пустые строки в конце текста
  • |-: Автоматический перенос строки в тексте + отсутствие новой строки в конце текста

Настройка по абзацам, отображение не обязательно по абзацам

В соответствии с этим требованием, мы надеемся, что конфигурация написана построчно, но отображение выглядит следующим образом:

I am a coder.My blog is didispace.com.

Способ 1: написать новую строку прямо в строке

Во всяком случае, самый грубый способ написания без новой строки, просто напишите это напрямую:

string: 'I am a coder.
         My blog is didispace.com.'

Здесь можно использовать двойные или одинарные кавычки. Поскольку нет контента, который нужно передавать, общая картина достаточно ясна.

Способ 2: Использование>,>+,>-

Лучший способ выразить это - использовать>,>+,>-Чтобы определить, например, следующее:

string: >
  I am a coder.
  My blog is didispace.com.

string: >+
  I am a coder.
  My blog is didispace.com.

string: >-
  I am a coder.
  My blog is didispace.com.

Ни один из этих трех на самом деле не будет переносить строку в конфигурацию, но все же будут некоторые незначительные различия в обработке в конце текста, а именно:

  • >: нет автоматического переноса строк в тексте + новая пустая строка в конце текста
  • >+: Нет автоматического переноса строк в тексте + в конце текста добавляются две пустые строки
  • >-: нет автоматического переноса строк в тексте + нет новой строки в конце текста

Добро пожаловать, чтобы обратить внимание на мой общедоступный номер: Programmer DD, получить эксклюзивные учебные ресурсы и ежедневный толчок галантерейных товаров. Если вам интересен мой рекомендуемый контент, вы также можете подписаться на мой блог:didispace.com