Swift - 扩展 String 转换计算字符

简单扩展了下 String 支持转换四则运算的计算字符,若要加入更多支持,可以自己加入扩展。下面的扩展只是把字面上的字符串,简单转化成中缀表达式并且分割成了数组,方便转后缀表达式计算结果。
var str = "{1+2-[(1+2)x2]x2}"
str.ConverCalculateChar()
//str =["(","1","+","2","-","(","(","1","+","2",")","*","2",")","*","2",")"]




extension String {
 
    mutating func ConverCalculateChar() -> [String] {
        var console = true //控制合成连续数字字符
        var SerialNumber = ""
        var strArr = [String]()
        self += "A" //临时帮助下循环正常进行
        for  char in self.characters {
            switch char {
                case "0","1","2","3","4","5","6","7","8","9",".":
                    console == true ? (SerialNumber += String(char)) : (SerialNumber = String(char))
                console = true
            default:
               console = false
               if !SerialNumber.isEmpty {
                strArr.append(SerialNumber)
                SerialNumber = ""
                }
                strArr.append(String(char))
            }
        }
        strArr.removeLast() //删除刚刚的重要临时工"A"
        var index = 0
        for str in strArr {
            switch str {       //设定一定的容错性转换
                case "X", "x", "×":
                strArr[index] = "*"
                case "÷":
                strArr[index] = "/"
                case "(", "{", "[":
                strArr[index] = "("
                case ")", "}", "]":
                strArr[index] = ")"
            default:
                break
            }
           index += 1
        }
        return strArr
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,761评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,754评论 18 399
  • 在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台...
    果果哥哥BBQ阅读 5,886评论 0 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 美食插图。临摹加自己的想法
    s诗小太阳阅读 365评论 0 3