首页 > 解决方案 > Ruby 在这里用 gsub 做什么?

问题描述

我正在将代码从 Ruby 转换为 Node.js。我在函数末尾遇到了这些行,我很好奇原始开发人员试图完成什么:

  url = url.gsub "member_id", "member_id__hashed"
  url = url.gsub member_id, member_id_hashed

  url

我假设url最后是 Ruby 的等价于return url; 带有 的行gsub,从我在网上发现的语法错误,对吗?不应该是:

url = url.gsub(var1, var2)?

如果它是正确的,他们为什么要调用它两次,一次带引号,一次不带引号?

标签: ruby

解决方案


gsub对字符串进行全局替换。如果我不得不猜测,URL 可能是

http://somewebsite.com?member_id=123

如果是这样,代码具有以下效果:

url.gsub "member_id", "member_id__hashed"
# => "http://somewebsite.com?member_id__hashed=123"

假设member_id = "123",member_id_hashed是 id 的某个散列版本,那么第二行将用散列版本替换“123”。

url.gsub member_id, member_id_hashed
# => "http://somewebsite.com?member_id__hashed=abc"

所以你要从http://somewebsite.com?member_id=123http://somewebsite.com?member_id__hashed=abc

文档:https ://ruby-doc.org/core-2.6/String.html#method-i-gsub


推荐阅读