【问题标题】:Ruby exclamation mark -printing next lineRuby感叹号 - 打印下一行
【发布时间】:2015-05-01 09:53:58
【问题描述】:
TENANT_NAME=gets.chomp('/\p{Alnum}/')
$first = TENANT_NAME.slice(0,1).capitalize
$second = TENANT_NAME.slice(1..-1)
EXPORT_PASSWORD="Export-"+ $first + $second + "!"
puts EXPORT_PASSWORD
我想在一行中打印 EXPORT_PASSWORD,但是当我尝试打印时,它会打印出来!从另一条线。我正在使用红宝石
输出:
devi123kumari
Export-Devi123kumari
!
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-3
ruby-on-rails-4
ruby-on-rails-3.1
【解决方案1】:
>TENANT_NAME=gets.chomp('/\p{Alnum}/')
somename
TENANT_NAME
=> "somename\n"
看到你在这里得到\n,这正在改变你的!到第二行。
>TENANT_NAME=gets.chomp
somename
TENANT_NAME
=> "somename"
现在你不会得到额外的线。
【解决方案2】:
试试:
EXPORT_PASSWORD="Export-"+ $first + $second.chomp + "!"'
这是因为如果您检查$second 的值,它包含尾随\n。
在 Ruby 中,在变量名前添加 $ 也不是标准做法。
【解决方案3】:
chomp 如果没有给出参数,则从字符串或回车符(即\n、\r 和\r\n)的末尾删除给定的参数:
"hello".chomp #=> "hello"
"hello\n".chomp #=> "hello"
"hello".chomp("llo") #=> "he"
您的代码从字符串末尾删除'/\p{Alnum}/'(这是一个字符串,而不是正则表达式):
'hello/\p{Alnum}/'.chomp('/\p{Alnum}/') #=> "hello"
这可能不是你想要的。只需使用 chomp 而不带参数即可。