在 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