gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:05:07 32 4
gpt4 key购买 nike

用户在文本字段中输入一个句子,然后在一个文本字段中输入数字 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/

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