gpt4 book ai didi

string - 替换swift 3字符串中的字符

转载 作者:行者123 更新时间:2023-12-01 15:30:46 25 4
gpt4 key购买 nike

我需要一个函数来连续用字符 A..J 替换数字 0..9。我如何在 Swift 3 中编写它?Swift 3 字符串操作太奇怪了:|我尝试访问字符,然后添加和偏移(移动)字符,但没有成功。

最佳答案

以下是您的问题的可能解决方案,它也是 Unicode 安全的:

let string = "0123456789 abc xyz 9876543210"
// upper case A...J use 65; lower case a...j use 97
let shift = 65
let convertedString = String(string.characters.lazy.map{ char in
Int(String(char)).map{ Character(UnicodeScalar($0 + shift)!) } ?? char
})

说明

想法/问题

将字符串的每个字符映射到另一个(或相同的)字符:0...9 -> A...J,其他一切都保留

实现

出于对大型字符串的性能原因,使用lazy 字符集合。一个不懒惰的人会创建一个中间 Array

一个字符到另一个字符的映射经过以下过程:

  1. 尝试将字符转换为Int(这里是Int?)

    1.1 如果失败(nil),nil 合并运算符(??)开始发挥作用并返回输入字符

  2. Int 值 ($0) 现在通过其(移位的)ASCII 表示 ASCII Table 转换回字符

  3. 将延迟映射的集合转换为 String。初始化程序的 Swifts 声明:

    public init<S : Sequence>(_ characters: S)
    where S.Iterator.Element == Character { ... }

关于string - 替换swift 3字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39493102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com