作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用户在文本字段中输入一个句子,然后在一个文本字段中输入数字 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/
我是一名优秀的程序员,十分优秀!