Swift字符串分离

问题描述 投票:0回答:2

我正在读取包含格式数据的文件:

1990 3 6.4 1.0 9

1991 1 5.3 12.0 10

所以得到的数组是["1990"][""][""][""]["3"]....

当我只需要

["1991"]["3"]["6.4"]....

我想将此信息提取到数组或结构中。但是当我试图:

let x = string.components(seperatedBy: .whitespaces)

它创建了一个我不需要的空格数组。

该数组应仅包含有用的值。

谢谢

arrays swift
2个回答
1
投票
  1. 将多个连续空格转换为一个空格。 let string = """ 1990 3 6.4 1.0 9 1991 1 5.3 12.0 10 """ let components = string.replacingOccurrences(of: "\\s+", with: " ", options: .regularExpression) .components(separatedBy: .whitespaces)
  2. 使用Scannerlet scanner = Scanner(string: string) var result: [String] = [] var value: NSString? = nil while scanner.scanUpToCharacters(from: .whitespacesAndNewlines, into: &value) { result.append(value as! String) }
  3. 枚举单词。 var words: [String] = [] string.enumerateSubstrings(in: string.startIndex..<string.endIndex, options: .byWords) {word, _, _, _ in words.append(word!) }

1
投票

如果.whitespaces不适合您,您可以尝试按空格字符拆分值。

let string = "1990 3 6.4 1.0 9 1991 1 5.3 12.0 10"
let strings = string.components(separatedBy: " ") // or .whitespaces to be more thorough

此外,您可以将值映射到实际数字。

let numbers = strings.flatMap(NumberFormatter().number)
© www.soinside.com 2019 - 2024. All rights reserved.