여러 줄에 걸쳐 YAML 문자열 끊기

1. 개요

이 기사에서는 YAML 문자열을 여러 줄로 나누는 방법에 대해 알아 봅니다.

YAML 파일을 구문 분석하고 테스트하기 위해 SnakeYAML 라이브러리를 사용합니다.

2. 여러 줄 문자열

시작하기 전에 파일에서 YAML 키를 String 으로 읽는 메서드를 만들어 보겠습니다 .

String parseYamlKey(String fileName, String key) { InputStream inputStream = this.getClass() .getClassLoader() .getResourceAsStream(fileName); Map parsed = yaml.load(inputStream); return parsed.get(key); }

다음 하위 섹션에서는 여러 줄로 문자열을 분할하는 몇 가지 전략을 살펴 보겠습니다.

또한 YAML이 블록의 시작과 끝에서 빈 줄로 표시되는 선행 및 끝 줄 바꿈을 처리하는 방법을 배웁니다.

3. 리터럴 스타일

리터럴 연산자는 파이프 ( "|") 기호로 표시됩니다. 줄 바꿈을 유지하지만 문자열 끝의 빈 줄을 단일 줄 바꿈으로 줄입니다.

YAML 파일 literal.yaml을 살펴 보겠습니다 .

key: | Line1 Line2 Line3

줄 바꿈이 유지되는 것을 볼 수 있습니다.

String key = parseYamlKey("literal.yaml", "key"); assertEquals("Line1\nLine2\nLine3", key);

다음으로 몇 가지 선행 및 끝 줄 바꿈 이 있는 literal2.yaml을 살펴 보겠습니다 .

key: | Line1 Line2 Line3 ...

한 줄로 줄인 끝 줄 바꿈을 제외하고 모든 줄 바꿈이 있음을 알 수 있습니다.

String key = parseYamlKey("literal2.yaml", "key"); assertEquals("\n\nLine1\n\nLine2\n\nLine3\n", key);

다음으로, 블록 촙핑에 대해 이야기하고 어떻게 줄 바꿈 시작과 끝을 더 잘 제어 할 수 있는지 살펴 보겠습니다.

두 가지 chomping 방법 인 keep 및 strip 을 사용하여 기본 동작을 변경할 수 있습니다 .

3.1. 유지

Keep은 literal_keep.yaml 에서 볼 수 있듯이 "+"로 표시됩니다 .

key: |+ Line1 Line2 Line3 ...

기본 동작을 재정의하면 모든 끝 빈 줄이 유지 되는 것을 볼 수 있습니다 .

String key = parseYamlKey("literal_keep.yaml", "key"); assertEquals("Line1\nLine2\nLine3\n\n", key);

3.2. 조각

이 스트립은 literal_strip.yaml 에서 볼 수 있듯이 "-"로 표시됩니다 .

key: |- Line1 Line2 Line3 ...

우리가 예상했듯이, 이것은 모든 끝 빈 줄제거합니다 .

String key = parseYamlKey("literal_strip.yaml", "key"); assertEquals("Line1\nLine2\nLine3", key);

4. 접힌 스타일

folded.yaml 에서 볼 수 있듯이 접힌 연산자는 ">"로 표시됩니다 .

key: > Line1 Line2 Line3

기본적으로 줄 바꿈은 비어 있지 않은 연속 줄의 공백 문자로 대체됩니다.

String key = parseYamlKey("folded.yaml", "key"); assertEquals("Line1 Line2 Line3", key);

몇 개의 빈 줄이 끝나는 유사한 파일 ( folded2.yaml )을 살펴 보겠습니다 .

key: > Line1 Line2 Line3 ...

빈 줄이 유지 되는 것을 볼 수 있지만 끝 줄 바꿈도 하나로 줄입니다 .

String key = parseYamlKey("folded2.yaml", "key"); assertEquals("Line1 Line2\n\nLine3\n", key);

블록 촘핑은 리터럴 스타일에 영향을 미치는 것과 같은 방식으로 접기 스타일에 영향을 미친다는 점을 명심해야합니다 .

5. 인용

큰 따옴표와 작은 따옴표를 사용하여 문자열 분할에 대해 간략히 살펴 보겠습니다.

5.1. 큰 따옴표

큰 따옴표를 사용하면 " \ n " 을 사용하여 여러 줄 문자열을 쉽게 만들 수 있습니다 .

key: "Line1\nLine2\nLine3"
String key = parseYamlKey("plain_double_quotes.yaml", "key"); assertEquals("Line1\nLine2\nLine3", key);

5.2. 작은 따옴표

반면에 작은 따옴표는 " \ n "을 문자열의 일부로 취급 하므로 줄 바꿈을 삽입하는 유일한 방법은 빈 줄을 사용하는 것입니다.

key: 'Line1\nLine2 Line3'
String key = parseYamlKey("plain_single_quotes.yaml", "key"); assertEquals("Line1\\nLine2\nLine3", key);

6. 결론

이 빠른 자습서에서는 빠르고 실용적인 예제를 통해 여러 줄에 걸쳐 YAML 문자열을 분리하는 여러 방법을 살펴 보았습니다.

항상 그렇듯이 코드는 GitHub에서 사용할 수 있습니다.