我嘗試反轉 sring,似乎在這種情況下我取得了一些成功:
let sampleSentence = "I like to learn Swift"
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
}
但我試圖更進一步并確保行的反向不會影響數字,例如:
let sampleSentence = "Test 1, I like to learn Swift 24/7"
現在我有結果:
print(reverseWordsInSentence(sentence: sampleSentence)) // 1tseT, I ekil ot nrael tfiwS 42/7
我的目標是取得成果:
print(reverseWordsInSentence(sentence: sampleSentence)) // tseT1, I ekil ot nrael tfiwS 24/7
我會很高興得到任何提示!
uj5u.com熱心網友回復:
您可以在閉包內添加一個檢查,如果子字串包含所有數字,則回傳
guard let string = string, !string.allSatisfy(\.isNumber) else {
return
}
完整代碼
func reverseWordsInSentence(sentence: String) -> String {
var sentence = sentence
sentence.enumerateSubstrings(in: sentence.startIndex..., options: .byWords) { string, range, _, _ in
guard let string = string, !string.allSatisfy(\.isNumber) else {
return
}
sentence.replaceSubrange(range, with: sentence[range].reversed())
}
return sentence
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344344.html
