0
//MARK: - Reverse every other word

var sampleSentence = "Hey my name is Chris, what is yours?"

func reverseWordsInSentence(sentence: String) -> String {
    let allWords = sentence.components(separatedBy: " ")
    var newSentence = ""
    for word in allWords {
        if newSentence != "" {
            newSentence += " "
        }
        let reverseWord = String(word//.characters.reverse()) //Problem
        newSentence += word
    }
    
    return newSentence
}

我在 YouTube 上通过“Lets Build That App”制作了一个教程,但他的视频是 2016 年的。他写的就像你在上面看到的那样,但字符串的字符函数不存在!

4

2 回答 2

1

该教程的 Swift 版本存在一些问题。首先,字符串中的字符属性已被删除。第二个收集反向方法已重命名为 reversed。第三,逻辑是有缺陷的,因为它会颠倒单词后的标点符号。您可以使用字符串 enumerateSubstrings in range,使用 byWords 选项来获取句子中单词的范围并将每个单词反转如下:

func reverseWordsInSentence(sentence: String) -> String {
    var sentence = sentence
    sentence.enumerateSubstrings(in: sentence.startIndex..., options: .byWords) { _, range, _, _ in
        sentence.replaceSubrange(range, with: sentence[range].reversed())
    }
    return sentence
}

var sampleSentence = "Hey my name is Chris, what is yours?"

reverseWordsInSentence(sentence: sampleSentence)  // "yeH ym eman si sirhC, tahw si sruoy?"
于 2021-02-09T05:48:30.160 回答
0

试试这个反向:

let reverseWord = String(word.reversed())
        newSentence += reverseWord

代替:

let reverseWord = String(word)//.characters.reverse()) //Problem
        newSentence += word

输出:

在此处输入图像描述

于 2021-02-09T05:39:34.743 回答