如何在Ruby中移除数组内字符串的空格、点、下划线等特殊字符
Ruby on Rails 字符过滤实现方案
你可以直接在现有方法的迭代链中加入正则替换逻辑,一次性完成字符转换和过滤,修改后的完整代码如下:
def valid_sheet_names Company.find(@company_id).asset_types.pluck(:name).reject(&:nil?).map do |name| name.downcase.gsub(/[\s._]/, '') end end
逻辑说明
- 正则规则
/[\s._]/会匹配三类需要移除的字符:\s:匹配所有空白字符(包含普通空格、制表符等,若仅需要匹配普通半角空格可直接将\s替换为空格即可).:匹配英文点号_:匹配下划线
gsub方法会将字符串中所有匹配到的字符替换为空字符串,达到移除效果。
效果验证
你给出的示例数组处理前后对比如下:
- 处理前:
["hardware", "computer", "network", "mobile devices"] - 处理后:
["hardware", "computer", "network", "mobiledevices"]
如果需要处理包含点、下划线的场景,例如原字符串为"device.type_test",处理后会输出"devicetypetest",符合需求。
可选简写方案
如果你偏好链式调用的简写形式,可以单独封装处理方法后调用:
# 单独封装字符处理逻辑 def clean_name(name) name.downcase.gsub(/[\s._]/, '') end def valid_sheet_names Company.find(@company_id).asset_types.pluck(:name).reject(&:nil?).map(&method(:clean_name)) end
内容的提问来源于stack exchange,提问作者waqar ahmad
相关产品推荐
相关产品推荐

