如何在 Swift 中转换 Int 数组中的字符串(数字)
How to convert a String (numeric) in a Int array in Swift
我想知道如何在 Swift 中将 String 转换为 Int 数组。
在 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));
}
感谢大家的帮助!
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
从 string
指向 char
,您可以使用 advance
在Swift中将string
转换为int
的方法是toInt()
可以使用flatMap将字符转为字符串,并将字符串强制转换为整数:
Swift 2 或 3
let string = "123456789"
let digits = string.characters.flatMap{Int(String([=10=]))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4
let string = "123456789"
let digits = string.flatMap{Int(String([=11=]))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4.1
let digits = string.compactMap{Int(String([=12=]))}
Swift 5 或更高版本
我们可以使用新角色属性 wholeNumberValue
https://developer.apple.com/documentation/swift/character/3127025-wholenumbervalue
let digits = string.compactMap{[=13=].wholeNumberValue}
let str = "123456789"
let intArray = map(str) { String([=10=]).toInt() ?? 0 }
map()
在 str
中迭代 Character
秒
String([=16=])
将 Character
转换为 String
.toInt()
将 String
转换为 Int
。如果失败(??
),使用0
。
如果您更喜欢 for
循环,请尝试:
let str = "123456789"
var intArray: [Int] = []
for chr in str {
intArray.append(String(chr).toInt() ?? 0)
}
或者,如果你想迭代 String
的索引:
let str = "123456789"
var intArray: [Int] = []
for i in indices(str) {
intArray.append(String(str[i]).toInt() ?? 0)
}
@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
包含零,您将知道 str
中有一个 0
,而不是其他变成零的字符
- 如果有非
Int
角色可能搞砸了,你会被告知。
Swift 3 次更新:
@appzYourLife:正确 toInt()
方法在 Swift 3 中不再适用于 String。
作为替代方案,您可以做的是:
intArray.append(Int(String(chr)) ?? 0)
将其包含在 Int()
内会将其转换为 Int。
Swift 3
整数数组转字符串
let arjun = [1,32,45,5]
print(self.get_numbers(array: arjun))
func get_numbers(array:[Int]) -> String {
let stringArray = array.flatMap { String(describing: [=10=]) }
return stringArray.joined(separator: ",")
字符串到整数数组
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([=11=])!}
}
Swift 3:函数方法
- 使用以下方法将
String
拆分为单独的 String
实例:
components(separatedBy separator: String) -> [String]
Reference: Returns an array containing substrings from the String that have been divided by a given separator.
- 在转换为
Int
时使用flatMap
Array
方法绕过nil
合并
Reference: Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.
实施
let string = "123456789"
let intArray = string.components(separatedBy: "").flatMap { Int([=10=]) }
let array = "0123456789".compactMap{ Int(String([=10=])) }
print(array)
我想知道如何在 Swift 中将 String 转换为 Int 数组。 在 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));
}
感谢大家的帮助!
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
从 string
指向 char
,您可以使用 advance
在Swift中将string
转换为int
的方法是toInt()
可以使用flatMap将字符转为字符串,并将字符串强制转换为整数:
Swift 2 或 3
let string = "123456789"
let digits = string.characters.flatMap{Int(String([=10=]))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4
let string = "123456789"
let digits = string.flatMap{Int(String([=11=]))}
print(digits) // [1, 2, 3, 4, 5, 6, 7, 8, 9]"
Swift 4.1
let digits = string.compactMap{Int(String([=12=]))}
Swift 5 或更高版本
我们可以使用新角色属性 wholeNumberValue
https://developer.apple.com/documentation/swift/character/3127025-wholenumbervalue
let digits = string.compactMap{[=13=].wholeNumberValue}
let str = "123456789"
let intArray = map(str) { String([=10=]).toInt() ?? 0 }
map()
在str
中迭代 String([=16=])
将Character
转换为String
.toInt()
将String
转换为Int
。如果失败(??
),使用0
。
Character
秒
如果您更喜欢 for
循环,请尝试:
let str = "123456789"
var intArray: [Int] = []
for chr in str {
intArray.append(String(chr).toInt() ?? 0)
}
或者,如果你想迭代 String
的索引:
let str = "123456789"
var intArray: [Int] = []
for i in indices(str) {
intArray.append(String(str[i]).toInt() ?? 0)
}
@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
包含零,您将知道str
中有一个0
,而不是其他变成零的字符 - 如果有非
Int
角色可能搞砸了,你会被告知。
Swift 3 次更新:
@appzYourLife:正确 toInt()
方法在 Swift 3 中不再适用于 String。
作为替代方案,您可以做的是:
intArray.append(Int(String(chr)) ?? 0)
将其包含在 Int()
内会将其转换为 Int。
Swift 3
整数数组转字符串
let arjun = [1,32,45,5]
print(self.get_numbers(array: arjun))
func get_numbers(array:[Int]) -> String {
let stringArray = array.flatMap { String(describing: [=10=]) }
return stringArray.joined(separator: ",")
字符串到整数数组
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([=11=])!}
}
Swift 3:函数方法
- 使用以下方法将
String
拆分为单独的String
实例:components(separatedBy separator: String) -> [String]
Reference: Returns an array containing substrings from the String that have been divided by a given separator.
- 在转换为
Int
时使用
flatMap
Array
方法绕过nil
合并
Reference: Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.
实施
let string = "123456789"
let intArray = string.components(separatedBy: "").flatMap { Int([=10=]) }
let array = "0123456789".compactMap{ Int(String([=10=])) }
print(array)