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

daupos2t  于 2023-04-04  发布在  Swift
关注(0)|答案(8)|浏览(124)

我想知道如何在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));
}

谢谢大家的帮助!

j91ykkif

j91ykkif1#

let str = "123456789"
let intArray = map(str) { String($0).toInt() ?? 0 }
  • map()str中迭代Character s
  • 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)
}

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

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

for i in indices(str) {
    intArray.append(String(str[i]).toInt() ?? 0)
}
hwazgwia

hwazgwia2#

您可以使用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]"

雨燕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))}

Swift 5或更高版本

我们可以使用新的字符属性wholeNumberValuehttps://developer.apple.com/documentation/swift/character/3127025-wholenumbervalue

let digits = string.compactMap{$0.wholeNumberValue}

Swift 5.2或更高版本Key Path Expressions as Functions

let digits = string.compactMap(\.wholeNumberValue)
9jyewag0

9jyewag03#

@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字符,是可能搞砸的事情。
pzfprimi

pzfprimi4#

雨燕3

Int数组到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到Int数组

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)!}   
}
dba5bblo

dba5bblo5#

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]"

要让iteratorstring指向char,可以使用advance
在Swift中将string转换为int的方法是toInt()

t3irkdon

t3irkdon6#

Swift 3更新:
@appzYourLife:这是正确的toInt()方法不再适用于Swift 3中的String。作为替代方案,您可以做的是:

intArray.append(Int(String(chr)) ?? 0)

将其包含在Int()中会将其转换为Int。

unhi4e5o

unhi4e5o7#

Swift 3:函数式方法

1.使用以下命令将String拆分为单独的String示例:components(separatedBy separator: String) -> [String]
引用:返回一个数组,其中包含String中被给定分隔符分隔的子字符串。
1.在转换为Int时,使用flatMapArray方法绕过nil合并
引用:返回一个数组,该数组包含使用此序列的每个元素调用给定转换的非空结果。

执行情况

let string = "123456789"
let intArray = string.components(separatedBy: "").flatMap { Int($0) }
yzxexxkh

yzxexxkh8#

let array = "0123456789".compactMap{ Int(String($0)) }
print(array)

相关问题