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