微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于字数计算的Swift字符串中的字数

我想创建一个过程来找出字符串中有多少个单词,用空格,逗号或其他字符分隔.然后将总数加起来.

我正在制作一个平均计算器,所以我想要数据的总数,然后将所有单词加起来.

解决方法

更新: Xcode 8.2.1• Swift 3.0.2

let sentence = "I want to an algorithm that Could help find out how many words are there in a string separated by space or comma or some character. And then append each word separated by a character to an array which Could be added up later I'm making an average calculator so I want the total count of data and then add up all the words. By words I mean the numbers separated by a character,preferably space Thanks in advance"

let wordList =  sentence.components(separatedBy: .punctuationCharacters).joined().components(separatedBy: " ").filter{!$0.isEmpty}

print(wordList) // [I,want,to,an,algorithm,that,Could,help,find,out,how,many,words,are,there,in,a,string,separated,by,space,or,comma,some,character,And,then,append,each,word,array,which,be,added,up,later,Im,making,average,calculator,so,I,the,total,count,of,data,and,add,all,By,mean,numbers,preferably,Thanks,advance]"
print(wordList.count)  // 79
extension String {
    var words: [String] {
        var words: [String] = []
        enumerateSubstrings(in: startIndex..<endindex,options: .byWords) { word,_,_ in
            guard let word = word else { return }
            words.append(word)
        }
        return words
    }
}

print(sentence.words) // ["I","want","to","an","algorithm","that","Could","help","find","out","how","many","words","are","there","in","a","string","separated","by","space","or","comma","some","character","And","then","append","each","word","array","which","be","added","up","later","I'm","making","average","calculator","so","I","the","total","count","of","data","and","add","all","By","mean","numbers","preferably","Thanks","advance"]

Swift 2.x

let sentence = "I want to an algorithm that Could help find out how many words are there in a string separated by space or comma or some character. And then append each word separated by a character to an array which Could be added up later I'm making an average calculator so I want the total count of data and then add up all the words. By words I mean the numbers separated by a character,preferably space Thanks in advance"

let wordList =  sentence.componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet()).joinWithSeparator("").componentsSeparatedByString(" ").filter{$0 != ""}

print(wordList) // [I,advance]"
print(wordList.count)  // 79

问题是得到单词的计数,但是如果你需要这些单词,你可以使用这个扩展改编自Martin R在这answer中建议的方法也能够处理撇号:

extension String {
    var words: [String] {
        var result:[String] = []
        enumerateSubstringsInRange(characters.indices,options: .ByWords) { result.append($0.substring!) }
        return result
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐