如何在SWIFT中从主字符串拆分数字和子字符串?

时间:2020-05-23 20:18:55

标签: ios swift string substring numeric

在某些情况下,我需要将数值和其他子字符串与主给定字符串分开。

假设主字符串为350.55kph。 然后,我期望的结果是350.55作为数字值,而kph是其他子字符串。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

方法如下:

let string = "350kph"
let stringArray = string.components(separatedBy: CharacterSet.decimalDigits.inverted)
for item in stringArray {
    if let integer = Int(item) {
        print("integer: \(integer)")
    }
}

注意:这适用于包含多个Int的字符串,例如:“每2小时350公里”。您只需要:

let string = "350kph"
let integer = Int(string.components(separatedBy: CharacterSet.decimalDigits.inverted).joined())
print("integer: \(integer)")

好的,我看到了您的修改,这是十进制的方法(还有其他方法):

let string = "350.55kph"
let components = string.components(separatedBy: ".")
let decimalPart = Int(components.last!.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()) ?? 0
let double = Double("\(components.first ?? "0").\(decimalPart)")
print(decimalPart,"double: \(double)")

其他方式:您可以修改CharecterSet以获得所需的结果。

答案 1 :(得分:1)

正则表达式可能会起作用。像([0-9.]+)([A-Za-z]+)这样的东西会将其提取为两组:1组带有数字部分,另一组带有单位。

关于如何与这些小组合作,这里有一些选择:Swift 3 - How do I extract captured groups in regular expressions?

相关问题