我的端点操作需要一个字符串(源自短信)。如何从字符串中有效地提取各种值
字符串可以包括:
- 字符串中的一个企业标签,它会识别业务
- 的员工工号(1000-9999)和字符串 内的比分淘汰10
实例:
- '4353 9'
- '4353得到了比分淘汰的9'
- '9 4353'
- '进球9员工4353'
- 'bizx谢谢'
- '谢谢bizx'
我无法控制用户输入。由于成本因素,我有两种类型的字符串可以接受。
我有以下代码尝试提取徽章号码分数值或业务标签值。
def endpoints
if badge_number = get_badge_number(params[:text])
if score = get_score(params[:text])
//do something
end
elsif business_tag = get_business_tag(params[:text])
// do stuff
end
end
def get_badge_number(msg)
msg.find do |badge_number|
Employee.exists?(badge_number: badge_number.to_i)
end
end
def get_score(msg)
msg.find do |score|
(1..10).include? score.to_i
end
end
def get_business_tag(msg)
msg.find do |tag|
Business.exists?(tag: tag)
end
end
正如你所看到的,它变得有点混乱。
我真的需要帮助来有效地提取相关的值。
当输入可能是一团糟时,通常提取有意义数据的解决方案也是如此。提取数字可以用正则表达式分组完成。提取名字将是一个痛苦。 –