【发布时间】:2014-11-19 12:24:29
【问题描述】:
我正在抓取网站的一些数据,其中部分数据包括 unicode 中的分数,例如6' 5¼"。我已成功使用正则表达式 (\\d)' (\\d{1,2}([\\xbc-\\xbe])?)\" 提取字符串的每个部分。
这给了我两个字符串,一个是"6",另一个是"5¼"。
麻烦的部分是包含 unicode 粗俗分数的位。显然,使用Double.parseDouble 无法正确解析。
我到处寻找 Java 的示例,但找不到任何示例,我该如何将 ¼ 输出为 0.25?
如果它更容易,我可以再次拆分正则表达式,以便它单独返回小数部分,所以我得到三个字符串而不是两个。
【问题讨论】:
-
可能将粗俗版本映射到它们的真实世界价值。
-
我已经看到了该解决方案,但宁愿不将值硬编码,但如果归根结底是这样,那么我可能别无选择。
-
第一次替换像
s = s.replace("¼", ".25").replace("½", ".5")-replace("¾", ".75");怎么样? -
差不多。
¼可能对我们人类有意义,但对于计算机来说,它和大多数其他角色一样,与a或P没有什么不同 -
would rather not have the values hard coded in硬编码有多少?如果它们在字符代码中是连续的,您可以先对字符进行边界检查,然后进行一些数学运算,例如匹配字符的代码减去基本字符的代码乘以转换,然后转换为字符串。