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

Swift 5如何按条件替换字符串字符实现数字转伪二进制

Swift 5 实现数字字符串伪二进制转换

问题要求

给定非空数字组成的字符串,按如下规则转换后返回新字符串:

  • 数值小于5的数字字符替换为"0"
  • 数值大于等于5的数字字符替换为"1"

你之前用Python写的遍历逐字符判断逻辑完全可行,Swift中String的索引逻辑和Python差异较大,直接套用Python的下标写法很容易报错。


关于String.replacingOccurrences(of:with:)的实现方案

这个方法的作用是全局替换字符串中固定匹配的内容,本身不支持条件判断逻辑,但你可以通过链式调用,逐个匹配0-9的数字完成替换,完全可以实现需求,代码如下:

func fakeBin(digits: String) -> String {
    var result = digits
    // 替换所有小于5的数字为0
    result = result.replacingOccurrences(of: "1", with: "0")
    result = result.replacingOccurrences(of: "2", with: "0")
    result = result.replacingOccurrences(of: "3", with: "0")
    result = result.replacingOccurrences(of: "4", with: "0")
    // 替换所有大于等于5的数字为1
    result = result.replacingOccurrences(of: "5", with: "1")
    result = result.replacingOccurrences(of: "6", with: "1")
    result = result.replacingOccurrences(of: "7", with: "1")
    result = result.replacingOccurrences(of: "8", with: "1")
    result = result.replacingOccurrences(of: "9", with: "1")
    return result
}

这种写法虽然能跑,但非常冗余,属于为了用这个方法而用,实际开发不推荐,下面是更符合Swift语法习惯的实现方式。


其他更优实现方式

1. 逐字符遍历拼接(和Python逻辑最贴近)

和你写Python的思路完全一致,初始化一个空字符串存结果,遍历原字符串每个字符,判断数值后拼接对应字符即可。注意Swift中Character转Int得到的是可选值,题目明确输入是纯数字,直接强解不会出错:

func fakeBin(digits: String) -> String {
    var res = ""
    for c in digits {
        res.append(Int(String(c))! < 5 ? "0" : "1")
    }
    return res
}

你之前写的代码框架有两个明显问题:

  • 把return digits写在了for循环内部,第一次遍历就会返回,不会处理完所有字符
  • Swift的String是值类型,遍历得到的字符是临时拷贝,直接在循环里修改遍历值不会影响原字符串,所以需要新建变量存储结果。

2. 高阶函数简洁实现

Swift中String的map方法可以直接遍历每个字符,转换后直接构造新字符串,代码非常精简:

func fakeBin(digits: String) -> String {
    String(digits.map { Int(String($0))! < 5 ? "0" : "1" })
}

3. ASCII值判断(性能最优)

数字字符的ASCII值是连续的,"0"的ASCII值为48,"5"的ASCII值为53,直接判断ASCII值可以省去类型转换的开销:

func fakeBin(digits: String) -> String {
    var res = ""
    for c in digits {
        res.append(c.asciiValue! < 53 ? "0" : "1")
    }
    return res
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:06:27