在 Ruby 中使用 Get 接受使用者輸入

Nurudeen Ibrahim 2022年5月18日
在 Ruby 中使用 Get 接受使用者輸入

在 Ruby 中構建命令列 (CLI) 應用程式時,一個常見的功能是接收來自使用者的輸入,包括使用者名稱或是/否響應。這就是 gets 關鍵字有用的地方。

本教程將展示如何構建一個非常簡單的 CLI 程式,該程式允許使用者輸入他們的名字並使用他們輸入的名字問候他們。

示例程式碼:

puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts "Hello #{name}, nice to have you here"

輸出:

Hi, welcome to my app.
Enter your name to get started:

以上是我執行程式碼後得到的輸出。此時,程式要求我輸入我的名字。這就是 gets 所做的;它建立一個提示並等待使用者輸入。

下面是我輸入我的名字為 John 並按 Enter 鍵後得到的完整輸出。

Hi, welcome to my app.
Enter your name to get started:
John
Hello John
, nice to have you here

你一定已經注意到上面的輸出中有一些奇怪的東西。為什麼打招呼 Hello John, nice to have you hereJohn 之後中斷?要了解實際情況,請檢查變數 name

示例程式碼:

puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts name.inspect
puts "Hello #{name}, nice to have you here"

輸出:

Hi, welcome to my app.
Enter your name to get started:
John
"John\n"
Hello John
, nice to have you here

以上是我輸入 John 作為我的名字後得到的完整輸出。你可以看到 name 變數顯示為 John\n

這就是 gets 的行為方式;它會自動將\n 附加到它作為使用者輸入接收到的任何值上,這稱為換行符,每當它出現在文字中時,這意味著文字應該在該點中斷,並在新行上繼續。

解決此問題的一個好方法是使用 chomp 方法,該方法刪除任何尾隨特殊字元,不僅是換行符 (\n),還包括回車符 (\r)。你可以在此處閱讀更多有關 chomp 工作原理的資訊。

示例程式碼:

puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets.chomp
puts "Hello #{name}, nice to have you here"

輸出:

Hi, welcome to my app.
Enter your name to get started:
John
Hello John, nice to have you here