如何在Swift中转换Int数组中的String(数字)

t0r*_*199 12 arrays string int swift

我想知道如何在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));
}  
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助!

rin*_*aro 17

let str = "123456789"
let intArray = map(str) { String($0).toInt() ?? 0 }
Run Code Online (Sandbox Code Playgroud)
  • map()迭代Characters instr
  • String($0)转换CharacterString
  • .toInt()转换StringInt.如果失败(??),请使用0.

如果您更喜欢for循环,请尝试:

let str = "123456789"
var intArray: [Int] = []

for chr in str {
    intArray.append(String(chr).toInt() ?? 0)
}
Run Code Online (Sandbox Code Playgroud)

或者,如果你想迭代以下的索引String:

let str = "123456789"
var intArray: [Int] = []

for i in indices(str) {
    intArray.append(String(str[i]).toInt() ?? 0)
}
Run Code Online (Sandbox Code Playgroud)

  • `toInt()` 在 Swift 2.x 的 `String` 中不再可用。 (2认同)

Leo*_*bus 11

您可以使用flatMap将字符转换为字符串,并将字符串强制转换为整数:

斯威夫特2或3

let string = "123456789"
let digits = string.characters.flatMap{Int(String($0))}
print(digits)   // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Run Code Online (Sandbox Code Playgroud)

斯威夫特4

let string = "123456789"
let digits = string.flatMap{Int(String($0))}
print(digits)   // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Run Code Online (Sandbox Code Playgroud)

Swift 4.1

let digits = string.compactMap{Int(String($0))}
Run Code Online (Sandbox Code Playgroud)