行row[/\w+/]
在下列情況下究竟做了什麼?此代碼中行[/ w + /]的用途是什麼?
fields = rows.shift.map{ |row|
row[/\w+/]
}
我明白的是,第一值是從行除去,其值都傳遞到塊並通過從塊返回的值替換。但[/\w+/]
對價值做什麼?在這種情況下,每一行都是一個字母數字字符串的數組。
行row[/\w+/]
在下列情況下究竟做了什麼?此代碼中行[/ w + /]的用途是什麼?
fields = rows.shift.map{ |row|
row[/\w+/]
}
我明白的是,第一值是從行除去,其值都傳遞到塊並通過從塊返回的值替換。但[/\w+/]
對價值做什麼?在這種情況下,每一行都是一個字母數字字符串的數組。
您可以看到字符串索引運算符[]
如何工作here。
例如,如果您傳遞一個數字(row[5]
),它將返回包含位置5(0是第一個字符)的字符的子字符串。但是,如果使用正則表達式而不是數字,則會返回與正則表達式匹配的第一個子字符串。
在正則表達式是匹配的一個或多個單詞字符A-Z,A-Z,數字0-9該特定情況下,和_
"abcd efg hij"[/w+/] #=> "abcd"
"abcd_efg hij"[/w+/] #=> "abcd_efg"
兩個斜線之間的任何內容都是regular expression。在這種情況下,\w
與任何單詞字符(A-Z
,a-z
,0-9
和_
)匹配,+
表示1個或多個字符。所以這段代碼會在給定的字符串中找到一個單詞的第一個出現,並丟棄其餘的單詞。
感謝。我意識到這是一個正則表達式。那麼它會在空格或下劃線之後拒絕任何東西? – Undistraction
\ w匹配下劃線 –
@FrederickCheung謝謝。 – Undistraction