使用表达式转换标称值的最佳方法

糟糕糟糕 成员职位:2贡献我
2021年7月编辑 帮助
我有一组英寸测量单位的数据,这些值是如此的missy,我试图找出一种方法来统一它们,并将它们转换为我可以与它们一起工作的方式
值示例:
  1. 1/ 8,1 / 16,19 / 17,13 / 3,1.1 /8
  2. 0.139, 0.07, 3.37,。250,0.14
  3. 3-1/ 8,1 -1/ 26,1 -18/ 23,10 -1/2
  4. 20 3 10
  5. 0.30 - -0.40
  6. 0.094 + / - -0.004
  7. 1.046 (1-1/16)
  8. 有些有文字和数字
我读过正则表达式,但我如何定义正则表达式,并在快速小调中使用它来分割这些复杂的值。
如果有任何其他方法来解决这个问题,我很感激任何解决这个问题的建议。

最佳答案

  • kaymankayman 成员职位:662独角兽
    解决方案接受
    不知道太多关于英寸的工作原理,但由于您的值似乎由逗号分隔,您可以使用它将字符串分割为单个值。如果你想保持英寸,你可以通过替换'-' to '来规范化这些。’或者反过来。

    如果你需要转换为毫米,你可以生成一个转换完整英寸和“子英寸”的正则表达式。不知道它到底叫什么…

    举个例子,如果你有3-1/16和一个像这样的正则表达式:

    ^ (d +)?[.-]?(?:(\ d +) / (\ d +)) ?

    你可以这样读:“开头是可选的全数字,后面是可选的连字符或点,然后是可选的除法符。”

    第一组是3,第二组是1,第三组是16,所以你可以这样

    ($1 * 25.4) +((25.4 /$ 2)/$3)来转换为mm。顺便说一句,我不知道我的转换是否正确,但你明白我的意思。

    现在,如果你有一个完整的匹配,这是有效的,在部分情况下,如2/16(所以没有完整的数字)或20(所以没有除法),这意味着你的替换需要调整
    登录注册置评。