คุณกำลังเขียนโปรแกรม 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
ขอบคุณที่อ่าน! 🙂