我想知道如何在Swift中转换Int数组中的String。 在Java中,我总是这样做:
String myString = "123456789";
int[] myArray = new int[myString.lenght()];
for(int i=0;i<myArray.lenght;i++){
myArray[i] = Integer.parseInt(myString.charAt(i));
}
感谢大家的帮助!
答案 0 :(得分:17)
let str = "123456789"
let intArray = map(str) { String($0).toInt() ?? 0 }
map()
在Character
str
String($0)
将Character
转换为String
.toInt()
将String
转换为Int
。如果失败(??
),请使用0
。 如果您更喜欢for
循环,请尝试:
let str = "123456789"
var intArray: [Int] = []
for chr in str {
intArray.append(String(chr).toInt() ?? 0)
}
OR,如果要迭代String
的索引:
let str = "123456789"
var intArray: [Int] = []
for i in indices(str) {
intArray.append(String(str[i]).toInt() ?? 0)
}
答案 1 :(得分:10)
您可以使用flatMap将字符转换为字符串并将字符串强制转换为整数:
Swift 2或3
let string = "123456789"
let digits = string.characters.flatMap{Int(String($0))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4
let string = "123456789"
let digits = string.flatMap{Int(String($0))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4.1
let digits = string.compactMap{Int(String($0))}
答案 2 :(得分:1)
@ rintaro的回答是正确的,但我只想补充一点,您可以使用reduce
清除任何无法转换为Int
的字符,甚至可以显示警告消息发生这种情况:
let str = "123456789"
let intArray = reduce(str, [Int]()) { (var array: [Int], char: Character) -> [Int] in
if let i = String(char).toInt() {
array.append(i)
} else {
println("Warning: could not convert character \(char) to an integer")
}
return array
}
优点是:
intArray
包含零,您将知道0
中有str
,而其他字符不会变为零Int
字符可能搞砸了,你会被告知。答案 3 :(得分:0)
var myString = "123456789"
var myArray:[Int] = []
for index in 0..<countElements(myString) {
var myChar = myString[advance(myString.startIndex, index)]
myArray.append(String(myChar).toInt()!)
}
println(myArray) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
要让iterator
从char
指向string
,您可以使用advance
在Swift中将string
转换为int
的方法是toInt()
答案 4 :(得分:0)
Swift 3更新:
@appzYourLife:Swift 3中的String不再具有正确的toInt()
方法。
作为替代方案,您可以做的是:
intArray.append(Int(String(chr)) ?? 0)
将其封闭在Int()
内,将其转换为Int。
答案 5 :(得分:0)
Swift 3
Int array to String
let arjun = [1,32,45,5]
print(self.get_numbers(array: arjun))
func get_numbers(array:[Int]) -> String {
let stringArray = array.flatMap { String(describing: $0) }
return stringArray.joined(separator: ",")
String to Int Array
let arjun = "1,32,45,5"
print(self.get_numbers(stringtext: arjun))
func get_numbers(stringtext:String) -> [Int] {
let StringRecordedArr = stringtext.components(separatedBy: ",")
return StringRecordedArr.map { Int($0)!}
}
答案 6 :(得分:0)
String
拆分为单独的String
实例:
components(separatedBy separator: String) -> [String]
参考:返回一个数组,该数组包含已被给定分隔符划分的字符串中的子串。
flatMap
Array
nil
方法绕过Int
合并
醇>
参考:返回一个数组,其中包含使用此序列的每个元素调用给定转换的非零结果。
<强>实施强>
let string = "123456789"
let intArray = string.components(separatedBy: "").flatMap { Int($0) }
答案 7 :(得分:0)
let array = "0123456789".compactMap{ Int(String($0)) }
print(array)