Swift - 在字符串中搜索并对数字求和

时间:2014-08-26 14:30:24

标签: string search swift numbers sum

嘿伙计们我有字符串" 69 - 13"如何检测" - "在字符串中以及如何对字符串69 + 13 = 82中的数字求和?

2 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点(componentsSeparatedByStringNSScanner,...)。 这里只使用Swift库函数:

let str = "69 - 13"
// split string into components:
let comps = split(str, { $0 == "-" || $0 == " " }, maxSplit: Int.max, allowEmptySlices: false)
// convert strings to numbers (use zero if the conversion fails):
let nums = map(comps) { $0.toInt() ?? 0 }
// compute the sum:
let sum = reduce(nums, 0) { $0 + $1 }
println(sum)

答案 1 :(得分:0)

以下是Swift 4中的更新实现,它依赖于更高阶函数来执行操作:

let string = "69+13"
let number = string.components(separatedBy: CharacterSet.decimalDigits.inverted)
     .compactMap({ Int($0) })
     .reduce(0, +)
print(number) // 82
  • components(separatedBy: CharacterSet.decimalDigits.inverted)删除所有非数字值并为每组值创建一个数组(在本例中为69和13)
  • Int($0)将您的string值转换为Int

  • compactMap删除任何零值,确保只保留有效值

  • reduce然后总结数组中剩余的值