0
剛開始使用Ruby,並卡住了聯編輯構建:紅寶石GSUB返回值
v1="SO"
print v1.gsub!(/\W/,"").reverse
v2="SO!!"
print v2.gsub!(/\W/,"").reverse
v1.gsub!
結果爲零。爲什麼? v2.gsub!
工程。
剛開始使用Ruby,並卡住了聯編輯構建:紅寶石GSUB返回值
v1="SO"
print v1.gsub!(/\W/,"").reverse
v2="SO!!"
print v2.gsub!(/\W/,"").reverse
v1.gsub!
結果爲零。爲什麼? v2.gsub!
工程。
這裏的關鍵是你使用gsub
,gsub!
的變異版本,它修改了它被調用的實際字符串。至於什麼它返回,the documentation它最好說:
執行的
String#gsub
換人到位,返回str
,或者nil
如果進行沒有換人。
您應該使用非變異版本,gsub
,如果不實際希望修改字符串它呼籲:
print v2.gsub(/\W/, "").reverse
或者你可以打印之前做替代變量:
v2.gsub!(/\W/, "")
print v2.reverse
或者,在Ruby 1.9的,你可以使用tap
:
print v1.tap { |v1| v1.gsub!(/\W/, "") }.reverse