如何在字符串中添加两个数字,我在这里执行此操作但它不起作用,它在行中说明
var result = Int(char1) + Int(char2)
无法为类型' int'调用初始值设定项使用类型'(字符)'
的agurment列表import UIKit
var str: String = "1 + 2"
var char1 = str[str.startIndex.advancedBy(0)]
var char2 = str[str.startIndex.advancedBy(4)]
var result = Int(char1) + Int(char2)
EDIT1:
在@Phillip Mills说完之后,它有效,但我有一个小问题:
import UIKit
var str: String = "1 + 2"
var char1 = str[str.startIndex]
var char2 = str[str.endIndex] //error: Execution was interrupted, reason: EXC_BADINSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
var result = Int(String(char1))! + Int(String(char2))!
为什么str.startIndex工作,但str.endIndex不起作用?
https://www.freewebmentor.com/2018/02/swift-program-add-two-numbers.html
答案 0 :(得分:6)
如果您知道分隔符将是" +"然后你可以使用
let str = "1 + 2"
let sum = str.componentsSeparatedByString(" + ").flatMap{ Int($0) }.reduce(0) { $0 + $1 }
这允许您添加多个数字,并一次添加两个以上,即:
let str = "1 + 2 + 432"
答案 1 :(得分:3)
即使您的问题仅针对两个数字,您也可以使用以下代码使用正则表达式并结合函数map
和reduce
来获取字符串中的所有数字:
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex, options: [])
let nsString = text as NSString
let results = regex.matchesInString(text,
options: [], range: NSMakeRange(0, nsString.length))
return results.map { nsString.substringWithRange($0.range)}
} catch let error as NSError {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
let string = "1 + 2 + 3 + 4"
let sum = matchesForRegexInText("[0-9]", text: string).map { Int($0)! }.reduce(0, combine: +)
print(sum) // 10
以上代码使用matchesForRegexInText
提取字符串中的所有数字,然后使用map
函数将所有数字转换为Int
并使用reduce
函数获得累积金额。
我希望这对你有所帮助。
答案 2 :(得分:3)
NSExpression
在Cocoa中被低估了一个阶级,可以用非常聪明的方式做到这一点。
let string = "1 + 2"
let arithmeticExpression = NSExpression(format: string)
let additionResult = arithmeticExpression.expressionValueWithObject(nil, context: nil) as! Int
// -> 3
答案 3 :(得分:2)
您可以从字符创建字符串,从字符串创建Int,因此有一种可能性:
var result = Int(String(char1))! + Int(String(char2))!