모든 문자와 숫자의 배열 생성


94

루비를 사용하면 알파벳과 0-9의 각 문자 배열을 쉽게 만들 수 있습니까?

답변:


145
[*('a'..'z'), *('0'..'9')] # doesn't work in Ruby 1.8

또는

('a'..'z').to_a + ('0'..'9').to_a # works in 1.8 and 1.9

또는

(0...36).map{ |i| i.to_s 36 }

(이 Integer#to_s방법은 숫자를 원하는 숫자 체계로 나타내는 문자열로 변환 합니다 )


2
*이 컨텍스트에서 사용되는 연산자 의 특정 이름 이 있습니까? 나에게 새로운 것입니다.
Michael Burr

1
@Michael Burr, 표시 연산자 . 참조 여기여기에
Nakilon

4
* 표시 코드 샘플이 아닌 루비 1.8 루비 1.9에서 작동 할 것이라고 답에 표시하십시오
Zabba

2
@Zabba, 당신은 당신의 코멘트에 그것을 표시 ..)
Nakilon

3
Ruby 2.1에서의 벤치마킹 [* ( 'a'.. 'z'), * ( '0'.. '9')]은 (0 ... 36) .map {| i보다 약간 더 빠릅니다. | i.to_s 36} (1.450000s 대 2.26000s, n = 100,000). 대문자를 포함하려면 다음을 사용하십시오. [* ( 'a'.. 'z'), * ( 'A'.. 'Z'), * ( '0'.. '9')]
Viet

33

문자 나 숫자의 경우 범위를 형성하고 반복 할 수 있습니다. 일반적인 아이디어를 얻으려면 이것을 시도하십시오.

("a".."z").each { |letter| p letter }

배열을 얻으려면 다음을 시도하십시오.

("a".."z").to_a

8

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

'a'.upto('z').to_a + 0.upto(9).to_a

6

이 시도:

alphabet_array = [*'a'..'z', *'A'..'Z', *'0'..'9']

또는 문자열 :

alphabet_string = alphabet_array.join

3
letters = *('a'..'z')

=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]


이것이 질문에 답할 수 있지만 코드에 대한 설명은 없습니다. 수행중인 작업에 대한 설명을 제공하려면 답변을 업데이트하십시오. 감사!
Miroslav Glamuzina

2
myarr = [*?a..?z]       #generates an array of strings for each letter a to z
myarr = [*?a..?z] + [*?0..?9] # array of strings a-z and 0-9

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