Ich versuche, die Variablen in einer Zeichenfolge ausgeben zu lassen. Wenn ich das Folgende drucke, formatiert es sich nicht korrekt mit einer neuen Zeile für jeden Titel und jede Variable.Ruby Druckvariable in einem String, Phone Validation
print "User: #{names}\nPhone: #{valid_phone?(number)}\n Email: #{email}"
Ich erhalte diese Ausgabe:
User: ["john", "doe\n"] Phone: 555-555
Email: [email protected]
Ausgabe sollte wie folgt aussehen:
User: John Doe
Phone: (555)555-5555
Email: [email protected]
Ich bin auch nicht die Telefonnummer Ausgabe im Format bekommen (555) 555-5555. Hier ist mein vollständiger Code. Vielen Dank!!
NAME_PATTERN = /([\w\-\']{2,})([\s]+)([\w\-\']{2,})/
EMAIL_PATTERN = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
PHONE_PATTERN = /^(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})$/
def valid_name?(name)
!!name.match(NAME_PATTERN)
end
puts "Enter your first and last name (John Doe): "
while (name=gets)
names = name.split(" ", 2)
if valid_name?(name)
puts "Great, that looks like it could work."
break
else
puts "Invalid entry, please enter first and last name. To exit press ctrl+c."
end
end
def valid_email?(email)
!!email.match(EMAIL_PATTERN)
end
puts "Enter your email address ([email protected]): "
while (email = gets)
if valid_email?(email)
puts "Great, that looks like it could work."
break
else
puts "Invalid email address entered. Please try again. To exit press ctrl+c."
end
end
puts "Enter your phone number including area code (numbers only): "
def valid_phone?(number)
!!number.match(PHONE_PATTERN)
number = number.to_s
area_code = number.length == 10 ? "(#{number[0..2]}) " : ''
office_code = number[-7..-5]
specific_line = number[-4..-1]
"#{area_code}#{office_code}-#{specific_line}"
end
while (number=gets)
if valid_phone?(number)
puts "Great, that looks like it could work."
break
else
puts "Invalid phone number entered. Please try again. To exit press ctrl+c."
end
end
print "User: #{names}\nPhone: #{valid_phone?(number)}\n Email: #{email}"
Der beste Ansatz beim Veröffentlichen einer Frage besteht darin, den Code auf das absolut notwendige Minimum zu streichen, um das Problem zu demonstrieren. Ich sehe, dass Sie den gleichen immer größer werdenden Codeabschnitt posten. Wenn Sie konzentriert bleiben, können die Menschen Ihr Problem schneller verstehen und haben eine bessere Chance auf eine Antwort. – tadman