如何在Swift中获取文本中真实单词的数量

Cue*_*Cue 10 string count swift

编辑:已经存在类似于此问题的问题,但它是由特定字符分隔的数字(对于平均计算器,获取快速的单词).相反,这个问题是要获得文本中真实单词的数量,以各种方式分隔:换行符,一些换行符,一个空格,一个空格等.

我想用Swift 3获取字符串中的单词数.

我正在使用这段代码,但我得到的结果不精确,因为数字是计算空格和新行而不是有效字数.

let str = "Architects and city planners,are  \ndesigning buildings to create  a better quality of life in our urban    areas."
// 18 words, 21 spaces, 2 lines

let components = str.components(separatedBy: .whitespacesAndNewlines)

let a = components.count

print(a)
// 23 instead of 18
Run Code Online (Sandbox Code Playgroud)

par*_*par 19

连续的空格和换行不会合并到一个通用的空白区域中,所以你只是在连续的空格字符之间得到一堆空的"单词".通过过滤掉空字符串来摆脱这种情况:

let components = str.components(separatedBy: .whitespacesAndNewlines)
let words = components.filter { !$0.isEmpty }

print(words.count)  // 17
Run Code Online (Sandbox Code Playgroud)

以上将打印,17因为您没有包含,作为分隔字符,因此该字符串"planners,are"被视为一个单词.

您也可以通过向分隔符集添加标点字符来打破该字符串,如下所示:

let chararacterSet = CharacterSet.whitespacesAndNewlines.union(.punctuationCharacters)
let components = str.components(separatedBy: chararacterSet)
let words = components.filter { !$0.isEmpty }

print(words.count)  // 18
Run Code Online (Sandbox Code Playgroud)

现在你会看到你想要的数量18.


归档时间:

查看次数:

5962 次

最近记录:

8 年,9 月 前