Ruby 从宝贝标题中截取货号~

mimosa · 2012年10月11日 · 最后由 mimosa 回复于 2012年10月11日 · 2560 次阅读
def parse_outer_id(title)
  title.gsub!(/\p{Han}/, ',') # 剔汉字
  arr = title.split(',').compact.reverse # 去空,倒转
  arr.each do |str|
    return str.strip unless str.size < 3
  end
  nil
end

效果:

parse_outer_id("SKOMART 正品 新款雪地靴中筒 女靴子 真皮雪地靴 S11S027A")
 => "S11S027A"
parse_outer_id("Nike 耐克官方 SWEET CLASSIC LEATHER SI 男子运动鞋 318333")
 => "318333"
parse_outer_id("adidas 阿迪达斯 五五折 训练 男 无衬梭织中长裤 黑 V35939")
 => "V35939"

不知大伙,还有更精简的方法没?

最后一个字段吗?


irb(main):007:0> "SKOMART 正品 新款雪地靴中筒 女靴子 真皮雪地靴 S11S027A".split(' ').last
=> "S11S027A"

从你给的效果的示例来看:你的货号都是在宝贝标题的最后并且和前面的字符使用空格分割的,那为什么不直接用 title.split(' ').last 直接取出货号呢?或者是我对你的问题没理解到位?

#1 楼 @search Sorry 没说清,因为是淘宝页面上抓的,未必是最后一个~

所以我会把 title 倒过来找~

#1 楼 @search 呵呵,想到一起去了

def parse_outer_id(title)
  title.gsub!(/\p{Han}/, ',') # 剔汉字
  arr = title.split(',').compact
  return arr.last.strip
end

感谢 @zzhattzzh @search ,精简版:

parse_outer_id("NIKE/耐克 新款男子AIR MAX跑步鞋453976-048/006/016 专柜正品")
=> "453976-048/006/016" 
需要 登录 后方可回复, 如果你还没有账号请 注册新账号