簡體   English   中英

如何將字符串中的每個單詞放入Swift中的數組中?

[英]How can I put each word of a string into an array in Swift?

是否可以將字符串中的每個單詞放入Swift中的數組中?

例如:

var str = "Hello, Playground!"

至:

var arr = ["Hello","Playground"]

謝謝 :)

編輯/更新:

Xcode 10.2•Swift 5或更高版本

我們可以使用集合拆分方法擴展StringProtocol

func split(maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true, whereSeparator isSeparator: (Character) throws -> Bool) rethrows -> [Self.SubSequence]

omittingEmptySubsequences設置為true並將閉包作為謂詞傳遞。 我們還可以利用新的Character屬性isLetter來分割字符串。

extension StringProtocol {
    var words: [SubSequence] {
        return split { !$0.isLetter }
    }
}

let sentence = "• Hello, Playground!"
let words = sentence.words // ["Hello", "Playground"]

當字符串中有多個連續的空格時,最后一個解決方案(來自Leo)將在數組中創建空元素。 它還將組合以“ - ”分隔的單詞和處理行尾字符作為單詞。

這個不會:

extension String 
{    
    var wordList: [String] 
    {
       return componentsSeparatedByCharactersInSet(NSCharacterSet.alphanumericCharacterSet().invertedSet).filter({$0 != ""})
    }
}

這兩個答案目前都不適用於Swift 4,但以下內容可以涵蓋OP的問題,希望是你的問題。

extension String {
    var wordList: [String] {
        return components(separatedBy: CharacterSet.alphanumerics.inverted).filter { !$0.isEmpty }
    }
}

let string = "Hello, Playground!"
let stringArray = string.wordList
print(stringArray) // ["Hello", "Playground"]

並且使用帶有數字和雙倍空格的較長短語:

let biggerString = "Hello, Playground! This is a  very long sentence with 123 and other stuff in it"
let biggerStringArray = biggerString.wordList
print(biggerStringArray)
// ["Hello", "Playground", "This", "is", "a", "very", "long", "sentence", "with", "123", "and", "other", "stuff", "in", "it"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM