Swift 3:将字符串转换为数组

时间:2016-10-26 22:34:19

标签: swift

我在SWIFT 3上的应用程序,我在屏幕上显示一个句子并记录用户的声音,看它是否匹配。

我想提取句子的每个单词以分别比较每个单词。

我使用代码:

let StringToLearn = word?.text
let StringToLearnArr = StringToLearn?.characters.split{$0 == " "}.map(String.init)
print("StringToLearn: \(StringToLearn)")
print("StringToLearnArr: \(StringToLearnArr)")


print("StringRecorded: \(StringRecorded)")
let StringRecordedArr = StringRecorded.characters.split(whereSeparator: {$0 == " "})
print("StringRecordedArr: \(StringRecordedArr)")

info:让StringRecorded等于(Siri Speech API):

(result?.bestTranscription.formattedString)!

控制台给我:

StringToLearn: Optional("My name is Florian")
StringToLearnArr: Optional(["My", "name", "is", "Florian"])
StringRecorded: My name is
StringRecordedArr: [Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: Optional(0x0000000174030d11), _countAndFlags: 4611686018427387906, _owner: Optional(My name is))), Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: Optional(0x0000000174030d14), _countAndFlags: 4611686018427387908, _owner: Optional(My name is))), Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: Optional(0x0000000174030d19), _countAndFlags: 4611686018427387906, _owner: Optional(My name is)))]

如何让StringRecordedArr得到相同的结果来比较两个数组的每个项目?

非常感谢。

2 个答案:

答案 0 :(得分:2)

你最终想要的是一个字符串数组,所以使用String版本代替字符版本:.components(separatedBy:""):

    print("StringRecorded: \(StringRecorded)")
    let StringRecordedArr = StringRecorded.components(separatedBy: " ")
    print("StringRecordedArr: \(StringRecordedArr)")

答案 1 :(得分:2)

您可以使用简单的z = 0x0F API。

,而不是拆分字符视图

这是一个看起来更好并且有效的示例:

components(separatedBy:)

注意 nonoptionals比强制unwraps和optionals更好。