Ich habe eine API, die Strings zurückgibt, ich möchte das Format dieser Zeichenfolgen so ändern, dass alle Wörter in ihren ersten Buchstaben umgewandelt werden + "." bis auf das letzte Wort, das gleich bleibt. Zum Beispiel "Vereinigte Staaten von Amerika" -----> "USA" oder "Real Madrid" ------> "R. Madrid". Kann mir bitte jemand helfen? Danke.Wie ändert man das String-Format in eine Abkürzung?
Antwort
- Separate Zeichenfolge in und Array von Wörtern (getrennt durch
" "
) - Für diesen Worten möglicherweise Präpositionen und Konjunktionen herauszufiltern (basierend auf dem Beispiel von US)
- Führen ersten Buchstaben Abschneiden aller aber das letzte Wort
- Schließlich, trenne Liste von Wörtern mit einander und dem letzten (nicht abgeschnittenen) Wort.
Z. B .:
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"
Wenn Sie Ihre ursprüngliche Orte Strings wissen w.r.t. richtig formatiert werden Obere & Kleinbuchstaben, dann können Sie die obige Lösung zu einer weniger ausführlichen ändern, z. Entfernen der Hilfemethode in der String
Erweiterung.
könnten Sie verwenden Komponenten (separatedBy: String) jede Zeichenfolge in und Array von Strings zu trennen basierend auf dem Leerzeichen zwischen ihnen:
var str = "United States of America"
print(str.components(separatedBy: " ")) // Outputs ["United", "States", "of", "America"]
Dann durch dieses Array durchlaufen, zur Änderung der jedes Wort, wie Sie wollen und Anhängen das Ergebnis zu einer variablen resultString. In Ihrem Fall möchten Sie nur den ersten Buchstaben eines Wortes, das nicht in eine vordefinierte Gruppe fällt (wie "von", "und" usw.), in Großbuchstaben schreiben (mit einem Aufruf in Großbuchstaben()). Verkettung mit "." und an deine Zeichenfolge anhängen. Wenn Sie zum letzten Element des Arrays gelangen, fügen Sie einfach das Wort so an, wie es ist.
Sie können mehr an den Entwickler Referenz finden: https://developer.apple.com/reference/swift/string
Hoffnung, das hilft. Alles bestens.
Dank bro .. Sie können "dfri" Antwort auf der Oberseite auch aussehen :) –
@AymenBRomdhane - kein Problem, dfri freundlicherweise übersetzt meine Pseudocode in tatsächlichen Code für Sie! – Sparky
- 1. Wie verwendet man StringFormat in XAML-Elementen?
- 2. Leerzeichen in StringFormat
- 3. Wie ändere ich das Stringformat von Oxyplot?
- 4. Wie ändert man das Anwendungssymbol?
- 5. Wie ändert man das Puffercodierungssystem in Emacs?
- 6. Wie ändert man das Ausführungsverzeichnis in Phing?
- 7. Wie ändert man das Kategorieseitenlayout in Magento?
- 8. Wie man eine Textdatei ändert?
- 9. Binding StringFormat
- 10. Swift: Wie ändert man das Anwendungssymbol?
- 11. Wie ändert man das Methodenverhalten durch Reflektion?
- 12. Hugo + Pygments - Wie ändert man das Hervorhebungsthema?
- 13. Wie ändert man das Aussehen von ListView?
- 14. Wie ändert man das Standard-Javadoc Stylesheet?
- 15. Wie ändert man das Verhalten von Stubs?
- 16. Wie ändert man das Firefox-Symbol?
- 17. Tortoise SVN - Wie ändert man das Kontextmenü?
- 18. Wie ändert man das Standardhintergrundbild von jdesktopane?
- 19. Wie ändert man das CSS des Hintergrundelements?
- 20. Wie man das Thema eines Programms ändert
- 21. Wie ändert man das Bild der Anmeldungskarte?
- 22. Surefire: Wie man das Ausgabeverhalten ändert
- 23. Wie man das ganze Paket leicht ändert?
- 24. StringFormat mit Font Weight
- 25. Wie ändert man das Openlayer Markersymbol?
- 26. strftime - wie man 1-Buchstaben-Abkürzung
- 27. Wie ändert man das Datenformat in der Schreibfunktion in Python?
- 28. Wie man eine Taste ändert ein Etikett
- 29. DataGridTextColum Bindung StringFormat
- 30. Wie ändert man das Logo, wenn man nach unten scrollt?
du bist genialer mann !!! danke: D –