You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串分割正则实现逻辑的代码精简方案咨询

字符串分割代码精简思路

一、从根源避免多余字符:精准匹配正则

你的核心需求是按规则分割数字字符串:优先3字符一组,末尾剩余4字符则拆为两个2字符组,剩余2/3字符保留为一组。如果之前用scan生成了多余空格和连字符,不如直接用更精准的正则匹配,彻底省去后续清理步骤:

def ft(str)
  str.scan(/\d{3}(?=\d{2,})|\d{2}(?=\d{2}$)|\d{2,3}/)
end

正则逻辑说明:

  • \d{3}(?=\d{2,}):匹配3位数字,要求后续至少还有2位数字(避免提前拆分末尾的4位)
  • \d{2}(?=\d{2}$):匹配2位数字,要求后续恰好还有2位数字到结尾(对应末尾4位拆成两个2位)
  • \d{2,3}:匹配剩余的2位或3位数字(处理末尾剩余不足4位的情况)

测试验证:

  • 输入 "123456" → 返回 ["123", "456"]
  • 输入 "1234567891011" → 返回 ["123", "456", "789", "10", "11"]

二、精简字符清理逻辑(若保留原有匹配方式)

如果必须保留原有正则匹配逻辑,可将两次gsub操作优化:

  1. 用tr_s压缩连续连字符(比gsub处理重复字符更高效),再移除首尾连字符:
cleaned_str = str.tr_s('-', '-').gsub(/^-|-$/, '')
  1. 或合并为单次gsub处理(可读性稍弱,但代码更短):
cleaned_str = str.gsub(/(^-+|-+$|-{2,})/) { |m| m == '-' ? '-' : (m.match?(/^-+$/) ? '' : '-') }

内容的提问来源于stack exchange,提问作者Omotayo Obafemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:15:38