0

您好,我正在使用以下内容:

let str = TextField.text!
let array = str.components(separatedBy: " ")

print(array)
print(array.count)

TextField 输入可以是:“一二三”</p>

这将打印
[“ONE”, “TWO”, “THREE”] 3

但有时文本输入到达:“一二三”或“一二三”或“一二三”</p>

我怎样才能得到没有空“”的所有组件并且仍然计数为3。而不是额外的空间占额外的组件?

或者如何从包含单独单词的字符串创建一个数组,无论它们如何被弃用。我只需要所有单独的单词。

4

2 回答 2

0

只是按照你的要求去做

var array = str.components(separatedBy: " ")
array.removeAll{$0.isEmpty}
于 2020-04-30T12:39:34.507 回答
0

您可以split(separator:)改用:

let text = " ONE   TWO THREE  "

print(text.components(separatedBy: " "))
// ["", "ONE", "", "", "TWO", "THREE", "", ""]

print(text.split(separator: " ").map(String.init))
// ["ONE", "TWO", "THREE"]

该方法有一个默认omittingEmptySubsequences:参数true。它返回一个 s 数组,如果需要Substring,可以将其映射到“真实” Strings。

于 2020-04-30T12:42:16.083 回答