Ruby 查找非数字字符的第一个索引
假设我有一个Ruby 查找非数字字符的第一个索引,ruby,regex,string,Ruby,Regex,String,假设我有一个字符串: someString = "1374j03d42s23dc" 我想找到非数字字符的第一个索引。在这种情况下,这将是4。如何使用regex (我不太擅长regex,所以如果答案能解释发生了什么就好了) ……试试看: someString.each_char.with_index { |c,i| puts i if c == someString.scan(/\D+/)[0] } 除了sawa的解决方案之外:当您希望代码更具可读性时,还可以使用: string = '137
字符串
:
someString = "1374j03d42s23dc"
我想找到非数字字符的第一个索引。在这种情况下,这将是4
。如何使用regex
(我不太擅长regex
,所以如果答案能解释发生了什么就好了)
……试试看:
someString.each_char.with_index { |c,i| puts i if c == someString.scan(/\D+/)[0] }
除了sawa的解决方案之外:当您希望代码更具可读性时,还可以使用:
string = '1374j03d42s23dc'
string.index(/\D/)
#=> 4
/\D/
匹配任何非数字(列表)\D
是[0-9]
的缩写形式,是0-9之间的数字。许多(如果不是全部的话)regex风格也支持相反的功能,即\D
-不是数字。因此,@sawa的asnwer是正确的,请看。向匿名的投票人寻求解释是徒劳的。两个极小的点:它应该是“第一个非数字字符的索引”;对于变量和方法的名称,Ruby约定是use snake case,而不是camel case(“some_string”而不是“someString”)。当然,你不必遵守惯例,但99%以上的红宝石学生会遵守惯例。
string = '1374j03d42s23dc'
string.index(/\D/)
#=> 4