나는 형태의 배열에 문자열의 무리가 [ "이름 : 안녕하세요", "PW : 롤"] 나는 세미콜론과 공간 후 단지 부분을 추출 할 수있는 방법사이에 텍스트를 가져 오는 방법 : 및 문자열?</p> <p>:
루비에?
나는 형태의 배열에 문자열의 무리가 [ "이름 : 안녕하세요", "PW : 롤"] 나는 세미콜론과 공간 후 단지 부분을 추출 할 수있는 방법사이에 텍스트를 가져 오는 방법 : 및 문자열?</p> <p>:
루비에?
["name: hi", "pw: lol"].map{|x| x.split(': ')[1]}
는 생산 :
["hi", "lol"]
: 다음에 항상 하나의 공백이 있는지 확실하지 않은 경우 ':'로 분리 한 다음 .strip 공백을 제거합니다. – Pablo
할 수 있습니다 그들을 통해 루프와 :
과 같이하여 그들을 분할 :
["name: hi", "pw: lol"].each do |item|
puts item.split(":").last.lstrip
end
예 :
>> a = ["name: hi", "pw: lol"]
=> ["name: hi", "pw: lol"]
>> a.each do |item|
?> puts item.split(":").last.lstrip
>> end
>> hi
>> lol
제안 사항에 의해 개럿과 애완 동물 어쩌면 그 트릭을 할 것입니다. 그러나 원한다면 한 단계 더 나아가 쉽게 해시로 변환 할 수 있습니다.
values = ["name: hi", "pw: lol"]
hash = Hash[*values.map{|item| item.split(/\s*:\s*/)}.flatten]
# => {"name"=>"hi", "pw"=>"lol"}
그래서 제가 몇 가지 개선 사항을 지적하자 두 번째 줄에 포장이 많이있다. 우리 ... [["name", "hi"], ["pw", "lol"]]
Hash#[]
키, 값, 키 값으로 매핑 될 값들의 목록을 사용하여 배열을 가지고 map
통화 후Hash#[]
정확한 요구 사항을 알 수 없으므로 해시를 원하는지 여부는 말할 수 없지만 옵션을 사용하는 것이 좋습니다.
나는 이전의 대답은 =
작동하지만 당신이 문자열을 처리하는 정규 표현식을 사용하는 것이 좋습니다 [ "이름 : 안녕하세요", "PW : 롤"]
a.map {| 항목 | item.match (/ \ w + : ([\ w \ S] +) /) [1]}
이하고자 출력 :
=> [ "하이", "웃음" ]
a.to_s
h=hi~=a
a.index[h].value
또는
hi{1}
의
답변의 형식이 올바르지 않습니다. 코드 행은 4 칸으로 시작해야합니다. 또한 답변이 작동하지 않는 것 같습니다. 설명을 추가하거나 수정하십시오. – spatz
중복 가능성 [루비의 문자열을 분할하는 방법?] (http://stackoverflow.co m/questions/4032440/how-to-split-a-string in-ruby) –