【发布时间】:2019-01-04 06:44:02
【问题描述】:
在 Swift 中从字符串(在 UITextView 中输入)解析多个双精度并将它们放入双精度数组中的最简单/最干净的方法是什么?
假设用户输入“23.4 45 16.997 -32”。当他进入它时,我想要
doubleArray[0] = 2
doubleArray[0] = 23
doubleArray[0] = 23.
doubleArray[0] = 23.4
doubleArray[1] = 4
doubleArray[1] = 45
等等
我有
var dataArray = [""]
dataArray = inputString.components(separatedBy: " ")
它可以很好地将数据分成一个字符串数组,然后我可以将每个字符串转换为双精度数。但是有没有更简洁更简洁的方式呢?
另外,有没有一种方法可以轻松地实时验证进入 UITextView 的数据?例如,条目中不允许有多个小数点或负号,不能有字母等?
我现在正在使用
let decimalPoint = NSLocale.current.decimalSeparator! as String
let validChars : Set<Character> = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", decimalSeparator[0], " "]
和
validChar = Set(inputString).isSubset(of: validChars)
If !validChar {
inputString.deleteBackward()
//display Error Message
}
当然,这还需要确保没有小数点或负号……等等。所有简单的步骤,但没有更简单的东西吗?!? (这也大大简化了 - 我实际上有特定的错误消息,例如“只允许一个小数分隔符”、“无效字符”等)
(我也曾在其他情况下使用过 NSNumber,但不确定如何/是否可以在这里使用它。)
我觉得我正在尝试重新发明轮子......
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。