如何判断Ruby字符串的开头?

时间:2014-04-02 09:48:08

标签: ruby string character

我需要发现字符串的第一个元素是否为char。 示例:

string_1 = "Smith has 30 years"   ----->  TRUE (first element is a character)
string_2 = "20/12/2013 Good Day"  ----->  FALSE (first element is not a character)
string_3 = "<My name is John>"    ----->  FALSE (first element is not a character)

使用&#34; .initial&#34;我能够访问每个字符串的第一个元素,但后来我不知道要进行测试

5 个答案:

答案 0 :(得分:1)

如果你的意思是检查字符串中的第一个元素是否是字母,你可以这样做:

string[0].match(/[a-zA-Z]/)

或者,正如Arup Rakshit建议的那样,您可以在正则表达式中使用i选项来忽略大小写:

string[0].match(/[a-z]/i)

如果测试的字符串以字母开头,则这些行将返回MatchData,如果不是,则返回nil。如果您想要truefalse值,则可以执行以下操作:

!!string[0].match(/[a-z]/i)

答案 1 :(得分:1)

您可以执行以下操作:

string[/\A[a-z]/i]

看看这个 - str[regexp] → new_str or nil

在Ruby nilfalse对象中被视为具有 falsy 值。

或使用Regexp#===,如下所示:

irb(main):001:0>  /\A[a-z]/i === 'aaa'
=> true
irb(main):002:0>  /\A[a-z]/i === '2aa'
=> false

答案 2 :(得分:1)

检测初始字符是否为字母(字母或下划线;不是字符)。

string =~ /\A\w/

答案 3 :(得分:0)

你可以这样做: -

regex = /[a-zA-Z]/

str[0][regex]
#=> either a letter or nil

str[0][regex].kind_of?(String)
#=> true if first letter matches the regex or false if match return nil.

答案 4 :(得分:0)

试试吧,

2.0.0-p247 :042 > /^[a-zA-Z]/ === 'Smith has 30 \n years'
 => true 
OR
2.0.0-p247 :042 > /\A[a-zA-Z]/ === "Smith has \n 30 years"
 => true


2.0.0-p247 :042 > /^[a-zA-Z]/ === '20/12/2013 \n Good Day'
 => false 
OR
2.0.0-p247 :042 > /\A[a-zA-Z]/ === "20/12/2013 \n Good Day"
 => false


2.0.0-p247 :042 > /^[a-zA-Z]/ === '<My name is \n John>'
 => false 
OR
2.0.0-p247 :042 > /\A[a-zA-Z]/ === "<My name \n is John>"
 => false