또 다른 루비 질문이 있습니다. 사용자 입력이 오류를 출력하기를 원하는 경우 5 개의 숫자인지 확인하고 싶습니다. 루프가 잘못되었을 수 있으며 때때로 혼란스러워집니다.
Integer (gets.chomp)를 사용해야합니까?
사용자로부터 정수를 얻을 때도 봤기 때문입니다.
print "What is your zip code? "
zip_code = gets.chomp
puts zip_code
zip_code_array = zip_code.split
unless zip_code_array.length == 5
puts "Error"
else
puts "Good"
end
우편 번호는 정수가 아닙니다. 5 자리 문자열입니다. * 예를 00911
들어은 유효한 우편 번호 (San Juan, Puerto Rico)이지만 실제로는 정수가 아닙니다.
올바른 해결책은 문자열이 특정 크기의 정수인지 확인하는 것이 아니라 5 자리 문자열인지 확인하는 것입니다.
정규 표현식은 이것에 대해 짧은 작업을합니다.
print "What is your zip code? "
zip_code = gets.chomp
puts zip_code
if zip_code =~ /^[0-9]{5}$/
puts "Good"
else
puts "Error"
end
정규식에 익숙하지 않은 경우 다음과 같이 분류됩니다.
/
^ # beginning of line
[0-9] # a digit 0-9
{5} # repeated exactly 5 times
$ # end of line
/x
* 엄격히 말하면 우편 번호는 5 자리 또는 5 자리 뒤에 대시와 4 자리 숫자 (ZIP + 4)가 올 수 있습니다. 응용 프로그램에서 두 가지를 모두 수용하는 것이 현명 할 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다