ios - Swift IOS,如何将应用程序用户输入的句子的字母大写,示例;第四个字母和第六个字母?

标签 ios swift

用户在文本字段中输入一个句子, 然后在一个文本字段中输入数字 4,在另一个文本字段中输入数字 6。它将第 4 个字母和第 6 个字母所在的句子大写。

例如,用户输入:“一年有 12 个月”

输出将为:“一年有 12 个月”。

如何将句子中的第四个和第六个字母大写?:

最佳答案

这是您要找的吗?

func capitalize(string: String, positions: IndexSet) -> String {
    let range = (0..<string.count)
    guard string.count > 0,
        positions.allSatisfy({ range ~= $0 }) else {
        fatalError("Couldn't capitalize")
    }

    return String(string.enumerated().map{ (index, char) in
        return positions.contains(index) ? String(char).capitalized.first! : char
    })
}

var str = "there are 12 months in a year"
capitalize(string: str, positions: [3, 6])  //"theRe Are 12 months in a year"
<小时/>

如果您只想计算字母,并从 1 开始计数:

func capitalize(string: String, positions: IndexSet) -> String {

    guard string.count > 0 else {
        fatalError("There is nothing to capitalize")
    }

    let zeroBasedPositions = positions.map {$0 - 1}

    guard zeroBasedPositions.allSatisfy({ $0 >= 0 }) else {
        fatalError("The positions should be one-based")
    }

    let letterIndexes = string
        .enumerated()
        .filter { (index, char) in
            CharacterSet(charactersIn: String(char))
                .isSubset(of: CharacterSet.letters)
        }.map { $0.0 }

    guard let positionsMax = zeroBasedPositions.max(),
        positionsMax <= letterIndexes.count
        else {
            fatalError("There are only \(letterIndexes.count) letters")
    }

    let lettersToCapitalizeIndexes = zeroBasedPositions.map { letterIndexes[$0] }

    return String(string.enumerated().map{ (index, char) in
        if lettersToCapitalizeIndexes.contains(index) {
            return String(char).capitalized.first!
        } else {
            return char
        }
    })
}

var str = "there are 12 months in a year"
capitalize(string: str, positions: [4, 6])  //"theRe Are 12 months in a year"

关于ios - Swift IOS,如何将应用程序用户输入的句子的字母大写,示例;第四个字母和第六个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815268/

相关文章:

ios - 渲染 Sprite 的纹理采样坐标

ios - swift:我的字典中的应用内购买价格

ios - Xcode 9.2 说我的 "iPhone has recently restarted"并且不会运行

ios - 如何对iOS应用进行自动化测试?

ios - 垂直滚动时在未调用的 collectionView 上向左/向右滑动

ios - 可选链接与可选绑定(bind) : When to use which?

ios - 'NSInvalidArgumentException',原因 : '-[BanGuayaPrototype.ViewController getTextId:]: unrecognized selector sent to instance 0x7fe5f69027d0'

ios - 无法在数组的 firstIndex 方法中的结构中使用惰性变量

ios - MKMapView 上的引脚注释上的触摸事件