【问题标题】:!= doesn't act as it should in VS code editor!= 在 VS 代码编辑器中没有发挥应有的作用
【发布时间】:2018-10-05 15:13:08
【问题描述】:
command = " "

while command != "bye"
  puts command
  command = gets.chomp
end 

puts "Come again soon!"

这个 while 循环在 VS 代码编辑器中不能正常运行。即使输入了退出命令,循环也会持续运行。在 irb 中测试 != 并且它应该有效。这是编辑器的一个奇怪的方面。它让我想把头发扯下来!求救

【问题讨论】:

  • 只是好奇:当你输入“再见”时它会打印什么?
  • 它只是打印“再见”,所以当它应该退出并说“马上再来”时,它会继续循环下去
  • 似乎 \r 或 \n 或其他换行符被添加到字符串的末尾,而不是 chomped。能否将puts command 替换为puts command, command.length 来测试这个版本?
  • 当使用 [command.length] 时它会返回一个额外的字符长度,那么它应该即 hello 返回 6 而不是 5 嗯?为什么会发生这种情况?
  • 嗯,它是 VisualStudio,所以我假设您使用的是 Windows。它有一个特殊的换行符号,不同于 Unix 系统。但是它必须由chomp 正常处理,不知道为什么 VS 终端会有不同的处理方式。不管怎样,command[-1].ord 电话会告诉你那个符号的 ASCII 码,你可以用谷歌搜索它是什么。

标签: ruby visual-studio irb


【解决方案1】:

您可以尝试使用#strip 而不是#chomp。它将删除前导和尾随空格。

来自ruby-doc.org

" hello ".strip #=> "hello"

"\tgoodbye\r\n".strip #=> "goodbye"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-01
    • 2022-07-03
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2020-07-20
    相关资源
    最近更新 更多