대괄호가 포함된 루비 문자열을 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 라이브러리를 효과적으로 사용하는 경우 간단합니다. 몇 줄의 코드로 데이터 구조를 손쉽게 조작할 수 있습니다.
따라서 다음 번에 예제와 같은 포맷의 문자열을 접하게 된다면, 이 단계를 기억하고 그것을 빠르게 사용 가능한 배열로 변환할 수 있을 것입니다!