Ruby에서 문자열을 분할하고 첫 번째 항목을 제외한 모든 항목을 가져 오는 방법은 무엇입니까?


83

문자열은 ex="test1, test2, test3, test4, test5"

내가 사용할 때

ex.split(",").first

그것은 반환

"test1"

이제 남은 항목, 즉` "test2, test3, test4, test5"를 얻고 싶습니다. 내가 사용한다면

ex.split(",").last

그것은 단지 반환

"test5"

첫 번째 항목을 건너 뛰는 나머지 항목을 모두 가져 오는 방법은 무엇입니까?


잠깐, 당신은 split( String메소드)를 사용하고 Array있습니까?
— Konrad Rudolph

죄송 guyzz ... 메신저 ... 내가 질문을 편집합니다 여기에 문자열을 사용하여
— SGI

답변:


98

이 시도:

first, *rest = ex.split(/, /)

이제 first첫 번째 값 rest이되고 나머지 배열이됩니다.


1
어떤 버전의 Ruby? 나는 1.8.7에서 그것을 시도했고 rest단지 "test2"를 포함한다.
— Jonas Elfström

7
아마 의미first,*rest = ex.split(/,/)
— EZPZ

네, 당시에는 내 라인을 테스트 할 수 없었습니다. first, *rest = ex.split(/,/)실제로 내가 의미하는 바였습니다. 정리해 주셔서 감사합니다.
— avdgaag

또 다른 방법은 결과 배열에서 범위를 가져 오는 것입니다. things = ex.split(/,/); things[1..-1]
— Russell B

44
ex.split(',', 2).last

끝에있는 2는 다음과 같이 말합니다.

일반적으로 분할은 값을 가능한 한 많은 조각으로 자르고 두 번째 값을 사용하여 얻을 수있는 조각 수를 제한 할 수 있습니다. 사용하면 다음 ex.split(',', 2)을 얻을 수 있습니다.

["test1", "test2, test3, test4, test5"]

대신 배열로 :

["test1", "test2", "test3", "test4", "test5"]

단점은 split첫 번째 값을 제외한 모든 값을 문자열이 아닌 배열로 원하면 다시해야한다는 것입니다. 여전히 좋은 속임수입니다. 또한 using ex.split(',', 2).last은 언급 한 배열을 반환하지 않고 마지막 값만 반환합니다.
— avdgaag

복사-붙여 넣기 실수 haha, 수정 됨
— user163365 2009-08-27

15

당신이 배열을 가지고 있기 때문에, 당신이 무엇을 정말 원하는이다 Array#slice,하지 split.

rest = ex.slice(1 .. -1)
# or
rest = ex[1 .. -1]

3
따라서 문자열을 사용 ex.split(/, /).slice(1..-1)하면 첫 번째 값에 관심이 없다고 가정하고 첫 번째 요소를 제외한 모든 요소를 ​​가져 오고 싶을 것 입니다.
— avdgaag

9

아마도 몇 가지를 잘못 입력했을 것입니다. 내가 수집 한 내용에서 다음과 같은 문자열로 시작합니다.

string = "test1, test2, test3, test4, test5"

그런 다음 중요한 하위 문자열 만 유지하도록 분할하려고합니다.

array = string.split(/, /)

그리고 결국 첫 번째 요소를 제외한 모든 요소 만 필요합니다.

# We extract and remove the first element from array
first_element = array.shift

# Now array contains the expected result, you can check it with
puts array.inspect

질문에 대한 답이 되었습니까?



6

파티에 조금 늦게 미안하고 아무도 드롭 방법을 언급하지 않은 것에 약간 놀랐습니다 .

ex="test1, test2, test3, test4, test5"
ex.split(",").drop(1).join(",")
=> "test2,test3,test4,test5"

5

이미 알고있는 배열로 사용하려는 경우 다른 매개 변수로 모두 사용할 수 있습니다.

parameter1,parameter2,parameter3,parameter4,parameter5 = ex.split(",")

2

다음과 같이 할 수도 있습니다.

String is ex="test1, test2, test3, test4, test5"
array = ex.split(/,/)
array.size.times do |i|
  p array[i]
end 

0

결과 배열의 인덱스가 split(",")[i]어디에 있는지 시도하십시오 i. split아래에 배열 제공

["test1", " test2", " test3", " test4", " test5"] 

색인으로 요소에 액세스 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.