[Swift通天遁地]五、高级扩展,14扩展String快速计算字符串中的各种数学表达式

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

➤微信公众号:山青咏芝(shanqingyongzhi)

➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/

➤GitHub地址:https://github.com/strengthen/LeetCode

➤原文地址:

➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。

➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

目录:[Swift]通天遁地Swift

本文将演示快速计算字符串中的各种数学表达式。

Gihub项目:【DDMathParser】

下载并解压该项目。将文件夹【MathParser】算术解析包,拖动到自己的项目中。

点击【Finish】完成文件拖动。

在导入的项目中,【MathParser】->【Info.plist】信息列表上鼠标右键

->【Delete】->【Move to Trash】,删除该配置文件,只保留该文件夹中的代码文件。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

现在开始编写代码,演示快速计算字符串中的数学表达式。

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4     
 5     override func viewDidLoad() {
 6         super.viewDidLoad()
 7         // Do any additional setup after loading the view, typically from a nib.
 8         
 9         //添加一个异常捕捉语句
10         do
11         {
12             //字符串计算方法,求和
13             let value = try "1+2".evaluate()
14             //控制台输出计算的结果
15             print("1+2 = \(value)")
16             
17             //初始化一个算术表达式
18             let expression = try Expression(string: "1+2*3/4-5")
19             //创建一个计算器对象
20             let evaluator: Evaluator = Evaluator()
21             //通过调用计算器对象的计算命令,计算字符串中的算术表达式
22             let value2 = try evaluator.evaluate(expression)
23             //在控制台输出算术表达式计算的结果。
24             print("1+2*3/4-5 = \(value2)")
25             
26             //幂运算
27             let value3 = try "1 + 2⁽³⁺¹⁻²⁾".evaluate()
28             //控制台输出计算的结果
29             print("1 + 2⁽³⁺¹⁻²⁾ = \(value3)")
30             
31             //识别特殊数学符号,如½
32             let value4 = try "12 * ½".evaluate()
33             //控制台输出计算的结果
34             print("12 * ½ = \(value4)")
35         }
36         catch
37         {
38             print("Something went wrong :(")
39         }
40     }
41     
42     override func didReceiveMemoryWarning() {
43         super.didReceiveMemoryWarning()
44         // Dispose of any resources that can be recreated.
45     }
46 }