row[/\w+/]
在以下情况下,这条线到底在做什么?
fields = rows.shift.map{ |row|
row[/\w+/]
}
我知道第一个值是从rows中删除的,它的值都被传递到块中并被从块返回的值替换。但是[/\w+/]
对价值有什么影响?在这种情况下,每一行都是一个字母数字字符串数组。
row[/\w+/]
在以下情况下,这条线到底在做什么?
fields = rows.shift.map{ |row|
row[/\w+/]
}
我知道第一个值是从rows中删除的,它的值都被传递到块中并被从块返回的值替换。但是[/\w+/]
对价值有什么影响?在这种情况下,每一行都是一个字母数字字符串数组。
两个斜杠之间的任何内容都是正则表达式。在这种情况下,\w
匹配任何单词字符(A-Z
、和),并且a-z
表示1 个或多个字符。因此,此代码将在给定字符串中找到第一次出现的单词并丢弃其余单词。0-9
_
+
您可以在此处[]
查看字符串索引运算符的工作原理。
例如,如果您传递一个数字 ( row[5]
),它会返回一个包含位置 5 的字符的子字符串(0 是第一个)。但是当使用正则表达式而不是数字时,它会返回与正则表达式匹配的第一个子字符串。
在这种特殊情况下,正则表达式匹配一个或多个单词字符 AZ、az、0-9 和 _
"abcd efg hij"[/w+/] #=> "abcd"
"abcd_efg hij"[/w+/] #=> "abcd_efg"