我有一個返回字符串的API,我想更改這些字符串的格式,以便所有單詞都轉換爲它們的第一個字母+「。」。除了最後一個詞保持不變之外。例如「美利堅合衆國」-----「美國美國」或「皇馬」------「R.馬德里」。任何人都可以幫忙嗎?謝謝。如何將字符串格式更改爲縮寫?
回答
- 獨立的串入並字(由
" "
分隔) - 對於這些字,可能篩選出介詞和連詞的陣列但最後一個詞
- 最後,加入單詞與eachother和最後一個(非截斷)單詞的截短列表。
例如爲:
import Foundation
// help function used to fix cases where the places
// words are not correctly uppercased/lowercased
extension String {
func withOnlyFirstLetterUppercased() -> String {
guard case let chars = self.characters,
!chars.isEmpty else { return self }
return String(chars.first!).uppercased() +
String(chars.dropFirst()).lowercased()
}
}
func format(placeString: String) -> String {
let prepositionsAndConjunctions = ["and", "of"]
guard case let wordList = placeString.components(separatedBy: " ")
.filter({ !prepositionsAndConjunctions.contains($0.lowercased()) }),
wordList.count > 1 else { return placeString }
return wordList.dropLast()
.reduce("") { $0 + String($1.characters.first ?? Character("")).uppercased() + "." } +
" " + wordList.last!.withOnlyFirstLetterUppercased()
}
print(format(placeString: "United States of America")) // "U. S. America"
print(format(placeString: "uniTED states Of aMERIca")) // "U. S. America"
print(format(placeString: "Real Madrid")) // "R. Madrid"
print(format(placeString: "Trinidad and Tobago")) // "T. Tobago"
print(format(placeString: "Sweden")) // "Sweden"
如果你知道你原來的地方字符串正確格式化w.r.t.上面的小寫字母,那麼你可以修改上面的解決方案到一個不太詳細的解決方案,例如,刪除String
擴展中的幫助方法。
你可以使用組件(separatedBy:字符串)每個字符串分離到和基於它們之間的空白字符串數組:
var str = "United States of America"
print(str.components(separatedBy: " ")) // Outputs ["United", "States", "of", "America"]
然後通過這個數組迭代,修正每一個字,你想和附加結果傳遞給一個變量resultString。在你的情況下,你只想把不屬於預定義組的任何單詞的第一個字母(例如「of」,「and」等),使其大寫(使用uppercased()調用) ,將它與「。」連接起來。並將其附加到您的字符串。當你到達數組的最後一個元素時,只需將該單詞原樣添加即可。
你可以找到更多的開發者參考:https://developer.apple.com/reference/swift/string
希望有所幫助。一切都好。 (基於您的美國的例子)
感謝兄弟..你可以看看頂部的「dfri」響應:) –
@AymenBRomdhane - 沒問題,dfri把我的僞代碼編譯成實際代碼給你! – Sparky
- 1. 如何將數字更改爲格式化的字符串
- 2. 如何在android中將字符串更改爲UTF-8格式
- 3. 如何將字符串轉換爲縮寫形式?
- 4. 如何將字符串更改爲Uri
- 5. 將字符串值的格式更改爲df中的數字
- 6. 將大寫更改爲小寫可以縮短字符串的長度嗎?
- 7. 如何將字段值大小寫更改爲'駱駝'格式?
- 8. Swift TableView單元格:如何將整數更改爲字符串
- 9. 如何將.NET標準格式字符串轉換爲Excel格式字符串
- 10. 如何將ctime更改爲正常字符串表示形式?
- 11. 更改WPF DatePicker的字符串格式
- 12. JS更改字符串格式
- 13. 更改格式字符串android
- 14. 更改日期字符串的格式
- 15. 以特定格式更改字符串?
- 16. 如何將像2d30m這樣的字符串格式更改爲時間跨度?
- 17. 如果字符串存在,則將其更改爲大寫 - VBA
- 18. 如何在XSLT中將字符串格式化爲Pascal格式?
- 19. 如何將此字符串格式化爲日期格式?
- 20. 將字符串壓縮爲更小的字符串?
- 21. javascript將字符串視爲字符數組 - 如何更改該字符串?
- 22. 將任何字符串格式化爲字符串「yyyy/MM/dd」
- 23. 將字符串轉換爲格式爲
- 24. 將int轉換爲縮短的格式化字符串
- 25. 如何將字符串解析爲字符串格式爲$$$$$$$$時cc在c#中?
- 26. 如何更改此代碼,以便將其寫入字符串?
- 27. 更改詮釋爲一個字符串,然後格式化字符串
- 28. 如何更改Oxyplot跟蹤值的字符串格式?
- 29. 如何在C#中更改字符串修訂格式?
- 30. 如何將帶分隔符的字符串更改爲數組?
你是天才男人!感謝:D –