Jaki jest sposób wydobywania ostatniego słowa w ciągu znaków w Swift? Więc jeśli mam "Lorem ipsum dolor sit amet", zwróć "amet". Jaki jest najskuteczniejszy sposób na zrobienie tego?Wyodrębnij ostatnie słowo w ciągu z Swiftem
Odpowiedz
Można użyć metody String enumerateSubstringsInRange. Pierwszy parametr po prostu przekazuj swoje ciągi znaków. Index i opcję .ByWords. Po prostu dołącz każdy podciąg do ostatecznej tablicy i zwróć go.
Xcode 8,1 • Swift 3.0.1 lub później
extension String {
var byWords: [String] {
var byWords:[String] = []
enumerateSubstrings(in: startIndex..<endIndex, options: .byWords) {
guard let word = $0 else { return }
print($1,$2,$3)
byWords.append(word)
}
return byWords
}
func firstWords(_ max: Int) -> [String] {
return Array(byWords.prefix(max))
}
var firstWord: String {
return byWords.first ?? ""
}
func lastWords(_ max: Int) -> [String] {
return Array(byWords.suffix(max))
}
var lastWord: String {
return byWords.last ?? ""
}
}
Zastosowanie:
let sentence = "Out of this world!!!"
let firstWord = sentence.firstWord // "Out"
let lastWord = sentence.lastWord // world"
let words = sentence.byWords // ["Out", "of", "this", "world"]
let first2Words = sentence.firstWords(2) // ["Out", "of"]
let last2Words = sentence.lastWords(2) // ["this", "world"]
Swift 2
extension String {
var byWords: [String] {
var result:[String] = []
enumerateSubstringsInRange(characters.indices, options: .ByWords) {
guard let substring = $0.substring else { return }
result.append(substring)
}
return result
}
}
Pierwsze użycie componentsSeparatedByString
podzielić swój ciąg do tablicy przez przestrzeń, a następnie dostać ostatnie słowo tablicy używając .last
var string = "Lorem ipsum dolor sit amet"
var stringArr = string.componentsSeparatedByString(" ")
var lastWord = stringArr.last //amet
Chciałbym również rozważyć użycie componentsSeparatedByCharactersInSet
, a przy użyciu zestawu znaków białymi:
let string = "Lorem ipsum dolor sit amet"
let stringArray = string.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
print(stringArray.last)
Podoba mi się Twoje podejście! Wielkie dzięki! Czy można uzyskać dwa ostatnie słowa z tym podejściem, czy też powinienem użyć pętli for? – senty
Nie zapomnij dodać do odpowiedzi 'import Foundation'. Przykład nie zadziała bez niego. – ColGraff
To działa dla mnie bez 'import Foundation':/ – senty
Inne odpowiedzi są w porządku, jeśli chcesz uwzględnić klasy Foundation. Jeśli chcesz użyć SWIFT-tylko klasy następnie można to zrobić w ten sposób:
Swift 3:
let str = "Lorem ipsum dolor sit amet"
let split = str.characters.split(separator: " ")
let last = String(split.suffix(1).joined(separator: [" "]))
let lastTwo = String(split.suffix(2).joined(separator: [" "]))
print(last) // -> "amet"
print(lastTwo) // -> "sit amet”
Swift 2:
let str = "Lorem ipsum dolor sit amet"
let split = str.characters.split(Character(" "))
let last = String(split.suffix(1).joinWithSeparator([" "]))
let lastTwo = String(split.suffix(2).joinWithSeparator([" "]))
print(last) // -> "amet"
print(lastTwo) // -> "sit amet"
- 1. Wyodrębnij ostatnie słowo w ciągu znaków w R
- 2. Zamień ostatnie słowo w ciągu znaków
- 3. Instrukcja SQL, aby znaleźć ostatnie słowo w ciągu znaków
- 4. Wyodrębnij pierwsze słowo ciągu znaków w zapytaniu do serwera SQL
- 5. Zastąp pierwsze i ostatnie słowo ciągu w sposób najbardziej pythonic
- 6. Dopasuj ostatnie słowo po/
- 7. przechodzenie C ciąg: pobierz ostatnie słowo ciągu znaków
- 8. Wyodrębnij plik z ciągu ZIP
- 9. Extract ostatnie słowo w ciągu znaków po przecinku, jeśli istnieje wiele słów else pierwsze słowo
- 10. Wyodrębnij pierwsze 2 znaki w ciągu znaków
- 11. Ostatnie słowo wyświetlane w wyglądzie tekstowym
- 12. C++ - wyodrębnij liczby z ciągu znaków
- 13. Wyodrębnij numer z ciągu tekstowego - Excel
- 14. Poprawnie wyodrębnij emotikony z ciągu Unicode
- 15. Wyodrębnij słowo z Synsetu za pomocą Wordnet w NLTK 3.0
- 16. Wyszukaj słowo w ciągu znaków
- 17. Wyodrębnij każde pełne słowo zawierające pewien podłańcuch
- 18. Usuń ostatnie powtarzających znaków z ciągu
- 19. Jak mogę dostać ostatnie słowo w każdej linii z bash
- 20. Przyciąć ostatnie 4 znaki z ciągu?
- 21. Jak usunąć ostatnie n znaków z ciągu?
- 22. R usuń ostatnie słowo ze stringa
- 23. Snowball Stemmer wywodzi tylko ostatnie słowo
- 24. Usunąć dwa ostatnie znaki ciągu
- 25. Usuń ostatnie wystąpienie w ciągu znaków
- 26. Wyodrębnij frazy z tekstu (1-4 słowo ngrams)
- 27. Extract ostatnie słowo z łańcucha przy użyciu C#
- 28. Wyodrębnij wiele wystąpień wzorca z ciągu znaków w R
- 29. Wyodrębnij dwie podwójne wartości z ciągu używając RegEx w Javie
- 30. Wyrażenie regularne, aby znaleźć ostatnie słowo w zdaniu
Ogromne dzięki! Myślę, że ta odpowiedź powinna być akceptowana. – senty