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.