루비에서 문자열을 랜덤하게 생성하는 가장 간단한 방법을 알고싶습니다


발생하는 문제 및 실행환경

너무 간단한 질문이라 부끄러운데...

소문자는 제외하고 대문자를 아무렇게나 8개 뽑아내려고 합니다.

저는

value = ""; 8.times{value  << (65 + rand(25)).chr}
#소문자 까지 포함하면
value = ""; 8.times{value << ((rand(2)==1?65:97) + rand(25)).chr}

이렇게 되는데 너무 더러워 보여서 다른 코드가 없는지 궁금합니다 ㅜㅜ

  • 2016년 02월 23일에 작성됨
조회수 109


1 답변


좋아요
0
싫어요
채택취소하기

여러가지 방법이 있는데 생각나는 건

#제일 간단한 방법 - 소문자
('a'..'z').to_a.shuffle[0,8].join

#대문자로 확장
m = [*('a'..'z'),*('A'..'Z')].shuffle[0,8].join

#소문자
(0...8).map { (65 + rand(26)).chr }.join

#소문자
(0...50).map { ('a'..'z').to_a[rand(26)] }.join

정도네요

  • 2016년 02월 23일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close