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

如何在Ruby中实现按每隔一个英文句号分割字符串?

Ruby按每隔一个英文句号分割字符串

当然可行,你可以通过正则表达式结合Ruby的字符串方法来实现这个需求,下面给你两种实用的实现方式:

方法一:用split配合正向预查正则

假设你的目标字符串是:

str = "Hello world. This is a test. Ruby is great. Let's split it."

要实现每隔一个英文句号分割,也就是每两个句子组成数组的一个元素,可以用这段代码:

result = str.split(/\.(?=[^.]+\.)/).map { |s| s.strip + '.' }
  • 正则/\.(?=[^.]+\.)/是正向预查逻辑:匹配那些后面还跟着「至少一个非句号字符+一个句号」的句号,这样就会在第1、3个句号的位置完成分割(刚好隔一个句号)。
  • map方法是为了把分割后丢失的补回来,同时去掉内容前后的多余空格。

如果你的字符串里句号后常跟着空格,可以调整正则兼容这种情况:

result = str.split(/\.\s*(?=[^.]+\.\s*)/).map { |s| s.strip + '.' }

方法二:用scan直接匹配目标组合

这种方式更直观,直接匹配「两个以句号结尾的句子组合」:

result = str.scan(/([^.]+\.[^.]+\.)/).flatten.map(&:strip)
  • scan会找出所有符合正则的子串,正则([^.]+\.[^.]+\.)的作用就是匹配连续两个以句号收尾的内容。
  • flatten用来把scan返回的二维数组转成一维,map(&:strip)去掉每个元素前后的空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:15:28