我试图将字符串分割成的整数数组:斯威夫特3:诠释
let stringNumbers = "1 2 10"
var arrayIntegers = stringNumbers.characters.flatMap{Int(String($0))}
但我的问题是,我得到这样的输出:
[1, 2, 1, 0]
当我应该得到这个输出:
[1, 2, 10]
我做错了什么?
我真的很感谢你的帮助。
我试图将字符串分割成的整数数组:斯威夫特3:诠释
let stringNumbers = "1 2 10"
var arrayIntegers = stringNumbers.characters.flatMap{Int(String($0))}
但我的问题是,我得到这样的输出:
[1, 2, 1, 0]
当我应该得到这个输出:
[1, 2, 10]
我做错了什么?
我真的很感谢你的帮助。
使用此
let stringNumbers = "1 2 10"
let array = stringNumbers.components(separatedBy: " ")
let intArray = array.map { Int($0)!} // [1, 2, 10]
小心使用'!'。虽然它不会导致此特定字符串出现问题,但如果字符串实际上包含任何无法转换为数字的文本,它将会崩溃。 – rmaddy
同意rmaddy – 2017-02-25 03:01:34
您正在将字符串的单个字符转换为数字。首先是1
,然后是空格,然后是2
,然后是空格,然后是1
,最后是0
。如果路线转换空间给出nil
与被过滤掉使用flatMap
。
你可以这样做:
let stringNumbers = "1 2 10"
var arrayIntegers = stringNumbers.components(separatedBy: " ").flatMap { Int($0) }
这分裂原字符串到字符串数组(用空格隔开),然后映射那些为整数。
我打印您的解决方案我得到“[可选(1),可选(2),可选(10)]”。我怎样才能打印数组数组? – user2924482
'let arrayIntegers = stringNumbers.components(separatedBy:“”).flatMap {Int($ 0)}' –
@LeoDabus谢谢。更新。在这种情况下,仅仅使用'map'就可以给出一系列可选项。如果字符串包含任何不能转换为数字的文本,则使用'flatMap'将会留下任何'nil'值。 – rmaddy
的可能的复制[将字符串转换成一个int数组](http://stackoverflow.com/questions/36765670/converting-a-string-to-an-int-array ) – 2017-02-25 02:40:32
那么你正在将每个单独的字符转换为整数。所有多位数字的数字都被解释为单独的一位数字。 – Alexander