使用表达式转换标称值的最佳方法
我有一组英寸测量单位的数据,这些值是如此的missy,我试图找出一种方法来统一它们,并将它们转换为我可以与它们一起工作的方式
值示例:
如果有任何其他方法来解决这个问题,我很感激任何解决这个问题的建议。
值示例:
- 1/ 8,1 / 16,19 / 17,13 / 3,1.1 /8
- 0.139, 0.07, 3.37,。250,0.14
- 3-1/ 8,1 -1/ 26,1 -18/ 23,10 -1/2
- 20 3 10
- 0.30 - -0.40
- 0.094 + / - -0.004
- 1.046 (1-1/16)
- 有些有文字和数字
如果有任何其他方法来解决这个问题,我很感激任何解决这个问题的建议。
0
最佳答案
-
kayman 成员职位:662独角兽不知道太多关于英寸的工作原理,但由于您的值似乎由逗号分隔,您可以使用它将字符串分割为单个值。如果你想保持英寸,你可以通过替换'-' to '来规范化这些。’或者反过来。
如果你需要转换为毫米,你可以生成一个转换完整英寸和“子英寸”的正则表达式。不知道它到底叫什么…
举个例子,如果你有3-1/16和一个像这样的正则表达式:
^ (d +)?[.-]?(?:(\ d +) / (\ d +)) ?
你可以这样读:“开头是可选的全数字,后面是可选的连字符或点,然后是可选的除法符。”
第一组是3,第二组是1,第三组是16,所以你可以这样
($1 * 25.4) +((25.4 /$ 2)/$3)来转换为mm。顺便说一句,我不知道我的转换是否正确,但你明白我的意思。
现在,如果你有一个完整的匹配,这是有效的,在部分情况下,如2/16(所以没有完整的数字)或20(所以没有除法),这意味着你的替换需要调整0