如何使用Ruby获取字符串中的第一个字符?

最终,我要做的是取某人的姓氏,然后用它来创建一个首字母.

所以如果字符串是"史密斯",我只想要"S".

推荐答案

可以使用Ruby的开放类使代码更具可读性.例如:

class String
  def initial
    self[0,1]
  end
end

将允许您对任何字符串使用initial方法.因此,如果你有以下变量:

last_name = "Smith"
first_name = "John"

然后你可以非常清晰易读地获得首字母:

puts first_name.initial   # prints J
puts last_name.initial    # prints S

这里提到的另一种方法在Ruby 1.8上不起作用(无论如何,你不应该再使用1.8了!——但当这个答案发布时,它仍然很常见):

puts 'Smith'[0]           # prints 83

当然,如果你不是经常这样做,那么定义方法可能会有些过分,你可以直接这样做:

puts last_name[0,1] 

Ruby相关问答推荐

根据部分已知值判断数组内容的简洁 Rubyist 方法是什么?

RSpec 中有没有一种方法可以同时断言调用次数和参数列表?

使用 Drive API 创建空文件

get.chomp() 与 STDIN.gets.chomp() 有什么区别?

给url添加参数

使用 Bundler 时,为什么要关心 RVM 的 Gemset 功能?

在 RSpec-2.11 中使用隐含的 `subject` 和 `expect`

将一个目录的内容复制到另一个目录

如何判断 Capistrano 中是否存在文件(在远程服务器上)?

Vim 用 ruby​​ 语法高亮显示很慢

如何强制 Ruby 显示完整的堆栈跟踪?

Unexpected Return (LocalJumpError)

include_examples和it_behaves_like有什么区别?

ActiveSupport::Memoizable 指的是哪种 Ruby memoize 模式?

Ruby 模板:如何将变量传递到内联 ERB?

是否有更简单的(单行)语法来别名一个类方法?

Ruby - 用另一个字符串替换第一次出现的子字符串

Ruby 中的Monkey Patching到底是什么意思?

如何在 Ruby 循环的第一次迭代中采取不同的行动?

查找模块中可用的类