Ruby:如何获取字符串的第一个字符

时间:2010-04-28 15:25:13

标签: ruby string

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

最终我正在做的是取一个人的姓氏,只是创建一个初始名称。

因此,如果字符串是“Smith”,我只想要“S”。

13 个答案:

答案 0 :(得分:118)

您可以使用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] 

答案 1 :(得分:95)

如果您使用最新版本的Ruby(1.9.0或更高版本),则以下内容应该有效:

'Smith'[0] # => 'S'

如果使用1.9.0+或1.8.7,则以下内容应该有效:

'Smith'.chars.first # => 'S'

如果您使用的版本低于1.8.7,则应该可以使用:

'Smith'.split(//).first # => 'S'

请注意,'Smith'[0,1] 在1.8上工作,为您提供第一个字符,它只会为您提供第一个字节

答案 2 :(得分:27)

"Smith"[0..0]

适用于ruby 1.8和ruby 1.9。

答案 3 :(得分:21)

为了完整起见,Ruby 1.9 String#chr返回字符串的第一个字符。它仍然可以在2.0和2.1中使用。

"Smith".chr    #=> "S"

http://ruby-doc.org/core-1.9.3/String.html#method-i-chr

答案 4 :(得分:14)

在MRI 1.8.7或更高版本中:

'foobarbaz'.each_char.first

答案 5 :(得分:11)

在Rails中

name = 'Smith'
name.first 

答案 6 :(得分:8)

试试这个:

>> a = "Smith"
>> a[0]
=> "S"

>> "Smith".chr
#=> "S"

答案 7 :(得分:5)

>> s = 'Smith'                                                          
=> "Smith"                                                              
>> s[0]                                                                 
=> "S"                                                        

答案 8 :(得分:2)

由于在1.9之前Ruby中令人讨厌的设计选择 - some_string[0]返回第一个字符的字符代码 - 最便携的方式是some_string[0,1],告诉它在索引0处得到一个长度为1个字符的子字符串。

答案 9 :(得分:0)

尚未提及的其他选项:

> "Smith".slice(0)
#=> "S"

答案 10 :(得分:0)

您也可以使用truncate

> 'Smith'.truncate(1, omission: '')
#=> "S"

或其他格式:

> 'Smith'.truncate(4)
#=> "S..."

> 'Smith'.truncate(2, omission: '.')
#=> "S."

答案 11 :(得分:0)

尝试一下:

def word(string, num)
    string = 'Smith'
    string[0..(num-1)]
end

答案 12 :(得分:-1)

任何这些方法都可行:

name = 'Smith'
puts name.[0..0] # => S
puts name.[0] # => S
puts name.[0,1] # => S
puts name.[0].chr # => S