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

Swift正则表达式:移除字符串中嵌入单词内部的数字

移除Swift字符串中嵌入单词内部的数字

需求

只删除夹在单词中间的数字,保留单词开头或结尾的数字。比如把wi3th变成with,但保留5What's9里的前后数字。

输入示例

let testString = "5What's9 wi3th this pro9ject I'm try905ing to build."

期望输出

let resultString = "5What's9 with this project I'm trying to build."

之前尝试的问题

  • 用\\b[:digit:]\\b:语法错误,无法匹配目标数字,返回原字符串
  • 用(\\d+)或[0-9]:会删除所有数字,不符合保留单词首尾数字的要求

解决方法

使用带前后断言的正则表达式,精准匹配被单词字符包围的数字,再替换为空字符串。

代码实现

let testString = "5What's9 wi3th this pro9ject I'm try905ing to build."
let resultString = testString.replacingOccurrences(
    of: "(?<=[^\\d\\W])\\d+(?=[^\\d\\W])",
    with: "",
    options: .regularExpression
)
print(resultString)
// 输出:5What's9 with this project I'm trying to build.

正则解释

  • (?<=[^\\d\\W]):反向预查,确保数字前面是「非数字、非单词分隔符」的字符(比如字母、撇号这类单词组成部分)
  • \\d+:匹配一个或多个连续数字
  • (?=[^\\d\\W]):正向预查,确保数字后面也是「非数字、非单词分隔符」的字符

这样就能精准定位到嵌入单词内部的数字,不会误删位于单词开头或结尾的数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:40:26