คุณกำลังเขียนโปรแกรม Ruby และต้องการถามคำถามกับผู้ใช้…
คุณทำอย่างนั้นได้อย่างไร
คุณสามารถใช้ Ruby gets วิธีการอ่านอินพุตของผู้ใช้
คุณสามารถโทร gets .
จากนั้นโปรแกรมของคุณจะเริ่มรอให้คุณพิมพ์บางอย่างด้วยแป้นพิมพ์และกดปุ่ม Enter
ผลลัพธ์?
คุณได้สตริงกลับมา
สตริงนี้มีเนื้อหาที่คุณ (หรือผู้ใช้) พิมพ์ ดังนั้นหากคุณกำหนดสตริงนี้ให้กับตัวแปร คุณจะสามารถใช้งานได้
ตัวอย่างทั่วไปคือโปรแกรมทักทาย
หน้าตาเป็นแบบนี้ :
name = gets.chomp
puts "Hello #{name}, nice to meet you!"
#{name}สิ่งที่เรียกว่าการแก้ไขสตริง
ลองทำสิ่งนี้และดูด้วยตัวคุณเองว่ามันทำงานอย่างไร
- ขั้นแรก บันทึกโค้ดนี้ลงในไฟล์ "greeting.rb"
- จากนั้น ใช้กับ “ruby greeting.rb” (จากโปรแกรมเทอร์มินัล)
ใส่ชื่อของคุณและโปรแกรมของคุณจะทักทายคุณ!
เจ๋งมาก
ตอนนี้ :
นี่คืออะไร chomp เกี่ยวกับธุรกิจ?
เป็นวิธีการ Ruby ที่เปลี่ยนผลลัพธ์ของ gets ด้วยวิธีที่เฉพาะเจาะจงมาก
ลองลบออก
รวมจุด (. ) ก่อนหน้านั้นจึงกลายเป็น name = gets แทนที่จะ name = gets.chomp .
หากคุณบันทึกรหัสและเรียกใช้อีกครั้ง…
คุณจะเห็นว่าคำทักทายของคุณถูกแบ่งออกเป็นสองบรรทัด แทนที่จะเป็นคำทักทายทั้งหมดจะอยู่ในบรรทัดเดียว
เป็นอย่างไรบ้าง
เข้าไปดูรายละเอียดกันเลย!
ทำความเข้าใจการขึ้นบรรทัดใหม่และอักขระพิเศษ
Ruby อ่านทุกสิ่งที่คุณพิมพ์ลงในโปรแกรมในขณะที่ get เมธอดทำงานอยู่
สำหรับ โปรแกรมทักทาย . ของเรา ซึ่งรวมถึงชื่อของคุณด้วย
และอักขระพิเศษ “ขึ้นบรรทัดใหม่” ที่ทำให้ข้อความทักทายแบ่งเป็นสองบรรทัด!
พบกับตัวละครขึ้นบรรทัดใหม่ :
\n
โดยปกติแล้ว อักขระพิเศษประเภทนี้จะมองไม่เห็นและปรากฏเฉพาะในรูปแบบของการขึ้นบรรทัดใหม่ การเว้นวรรค สี ฯลฯ
หากคุณต้องการเห็นพวกเขา คุณต้องมีไฟฉายวิเศษในราคา $10,000
ล้อเล่นนะ!
สิ่งที่คุณต้องมีคือ p วิธีการหรือ inspect วิธีการ
ตัวอย่างการใช้งาน :
p name # "Jesus\n"
มาแล้วจ้า!
อักขระ "บรรทัดใหม่" ของเรา (\n )
สิ่งนี้ทำให้เรากลับมาที่คำถามเดิมของเรา…
chompคืออะไร เกี่ยวกับ?
จุดประสงค์ของ chomp คือการลบอักขระขึ้นบรรทัดใหม่ที่ท้ายสตริง
อย่างที่คุณเห็น มันมีประโยชน์มาก!
ตัวอย่างอื่น
การมีอักขระขึ้นบรรทัดใหม่นี้ หรืออักขระพิเศษอื่นๆ จะส่งผลต่อสิ่งต่างๆ มากกว่ารูปลักษณ์ของสตริงเมื่อคุณพิมพ์
นอกจากนี้ยังสามารถส่งผลต่อคำสั่ง if ของคุณด้วย!
ตัวอย่าง :
name = gets if name == "David" puts "Hello David, we were expecting you!" end
ในโค้ดนี้ หากคุณไม่ใช้ chomp ด้วย gets ทั้งสองสตริงจะไม่เหมือนกันเนื่องจากอักขระขึ้นบรรทัดใหม่ (\n ) ดังนั้นค่านี้จะประเมินเป็น false .
ขะ…
นอกจากนี้ยังใช้กับสตริงที่คุณได้รับนอก gets เช่น ข้อมูลที่คุณได้รับจากการอ่านฐานข้อมูล ไฟล์ หรือแหล่งอื่นๆ
จับตาดูตัวละครพิเศษเหล่านี้ให้ดี!
ชม vs สับ vs สตริป
อีกสองวิธีที่คุณอาจพบว่ามีประโยชน์ในการล้างข้อมูลของผู้ใช้คือ chop &strip .
ด้วย strip คุณสามารถลบช่องว่าง
ตัวอย่าง :
" John Smith ".strip
ด้วย chop คุณจะลบอักขระตัวสุดท้ายออกเสมอ
การลบตัวละครตัวแรก
อีกอย่างที่คุณอาจต้องการก็คือการลบอักขระออกจากจุดเริ่มต้น
ทำแบบนี้ก็ได้ :
str = "Mr. John" str[0..3] = "" str # "John"
การดำเนินการนี้จะลบอักขระสี่ตัวแรก
สองได้รับวิธีการ? เนื้อเรื่องเข้มข้น!
มีกรณีพิเศษ…
คุณจะต้องใช้ $stdin.gets แทนที่จะแค่ gets .
หากคุณได้รับข้อผิดพลาดเช่นนี้ :
`gets': No such file or directory @ rb_sysopen
ทำไม?
เนื่องจากมี gets . สองเวอร์ชัน วิธีการ
- เวอร์ชันเริ่มต้นพยายามอ่านชื่อไฟล์
- เวอร์ชันทางเลือก (
$stdin.gets) อ่านจากการป้อนข้อมูลของผู้ใช้เสมอ
ตอนนี้ คุณก็รู้ หากคุณเห็นข้อผิดพลาดเช่นนั้นขณะใช้ gets ลองเปลี่ยนเป็น $stdin.gets .
สรุป
คุณได้เรียนรู้เกี่ยวกับวิธีการ get &chomp สิ่งที่พวกเขาทำ วิธีการทำงาน และเหตุใดจึงมีประโยชน์!
เรียนรู้ต่อไปด้วยบทแนะนำ Ruby
ขอบคุณที่อ่าน! 🙂