Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift IOS,如何将应用程序用户输入的句子字母大写,例如;第四个字母和第六个字母?_Ios_Swift - Fatal编程技术网

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

Swift IOS,如何将应用程序用户输入的句子字母大写,例如;第四个字母和第六个字母?,ios,swift,Ios,Swift,用户在文本字段中输入一个句子, 然后在一个文本字段中输入数字4,在另一个文本字段中输入数字6。它将句子的第四个字母大写,第六个字母大写 例如,用户输入:“一年有12个月” 产出将是:“一年有12个月” 如何将句子中的第4个字母大写?:这就是你要找的吗 func capitalize(string: String, positions: IndexSet) -> String { let range = (0..<string.count) guard string.c

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

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

产出将是:“一年有12个月”


如何将句子中的第4个字母大写?:

这就是你要找的吗

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"
func大写(string:string,positions:IndexSet)->string{
设范围=(0..0,
所有满足({range~=$0})else{
fatalError(“无法资本化”)
}
返回字符串(String.enumerated().map{(index,char)in)
返回位置。包含(索引)?字符串(字符)。大写。第一!:字符
})
}
var str=“一年有12个月”
大写(字符串:str,位置:[3,6])/“一年有12个月”

如果您只想数数字母,并让计数从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"
func大写(string:string,positions:IndexSet)->string{
guard string.count>0其他{
fatalError(“无需资本化”)
}
设zeroBasedPositions=positions.map{$0-1}
保护zeroBasedPositions.allConfect({$0>=0})else{
fatalError(“职位应以一个为基础”)
}
让letterindex=string
.经点算()
.filter{(索引,字符)在
CharacterSet(charactersIn:String(char))
.isSubset(共:字符集字母)
}.map{$0.0}
防护罩let位置max=zeroBasedPositions.max(),

位置最大到目前为止您尝试了什么?它可以是用户输入的任意两个数字,不必是第4和第6。它可以是第1和第2。根据他的示例,我相信他不会计算空格。谢谢,所以不要使用位置[4,6]我直接使用文本中的用户输入-fields@bob通过在
capitalize
function@RakeshaShastri我补充说optionI在运行代码时遇到了一些问题,因为我遇到了错误