대괄호가 포함된 루비 문자열을 Array로 변환하는 방법

루비로 작업하고 있고 대괄호로 포맷된 문자열을 접하게 된다면, 그 문자열을 배열 또는 중첩 배열로 변환해야 할 필요가 있을 수 있습니다. 이 게시물에서는 [[this, is],[a, nested],[array]]와 같이 포맷된 문자열을 대응하는 배열 [['this','is'],['a','nested'],['array']]로 변환하는 구체적인 예를 다룰 것입니다.

문제 이해하기

당신이 가진 문자열은 간단해 보일 수 있지만, 사용 가능한 배열 형식으로 파싱하기는 꽤 까다로울 수 있습니다. 문제는 요소들이 구조화되는 방식과 루비가 그것들을 해석하는 방식에서 발생합니다. 이를 해결하기 위해 루비가 쉽게 처리할 수 있는 데이터 직렬화 언어인 YAML을 활용할 수 있습니다.

단계별 솔루션

문자열을 배열로 변환하려면 다음 단계를 따르십시오:

1. 문자열 준비하기

원본 문자열은 YAML에 적합한 포맷이 부족할 수 있습니다. 특히, YAML은 각 쉼표 뒤에 공백이 있어야 합니다. 따라서 그것을 [[this, is], [a, nested], [array]]로 업데이트해야 합니다. 루비에서 이를 수행하는 방법은 다음과 같습니다:

str = "[[this, is],[a, nested],[array]]"
str.gsub!(/(\,)(\S)/, "\\1 \\2")

이 코드 줄은 원본 문자열을 수정하여, 쉼표 뒤에 비공백 문자가 오면 쉼표 뒤에 공백을 삽입합니다.

2. YAML 라이브러리 로드하기

루비에서 YAML 기능을 사용하려면, YAML 라이브러리를 요구해야 합니다. 코드의 시작 부분에 다음 줄을 삽입하십시오:

require 'yaml'

3. 문자열을 배열로 변환하기

문자열 포맷이 올바르게 수정되고 YAML 라이브러리를 로드한 후, 다음과 같은 간단한 명령으로 문자열을 배열로 변환할 수 있습니다:

newarray = YAML::load(str)

최종 코드

모든 것을 종합하면, 최종 루비 코드는 다음과 같습니다:

require 'yaml'
str = "[[this, is],[a, nested],[array]]"
str.gsub!(/(\,)(\S)/, "\\1 \\2")  # 쉼표 뒤에 공백 추가
newarray = YAML::load(str)        # 배열로 변환
puts newarray.inspect              # 출력 => [['this', 'is'], ['a', 'nested'], ['array']]

결론

괄호가 있는 문자열을 루비에서 배열로 변환하는 것은 포맷 문제를 처리하고 YAML 라이브러리를 효과적으로 사용하는 경우 간단합니다. 몇 줄의 코드로 데이터 구조를 손쉽게 조작할 수 있습니다.

따라서 다음 번에 예제와 같은 포맷의 문자열을 접하게 된다면, 이 단계를 기억하고 그것을 빠르게 사용 가능한 배열로 변환할 수 있을 것입니다!