1

我有一个脚本可以扫描网页以将格式应用于数字。例如,如果它发现一个大于 50000 的数字,它会应用红色背景。

该脚本在使用点作为小数分隔符的语言中运行良好(例如,英语12,345.67将被解释为 12345.67),但在使用逗号作为小数分隔符的语言中失败(法语1,234将被解释为 1234 而不是 1.234)。

我的问题:有没有办法检测网页区域设置,并相应地解释数字?

4

3 回答 3

0

You can use JavaScript to determine if the locale uses commas or dots as the decimal separator as such:

function getDecimalSeparator() {
  return (0.1).toLocaleString().substring(1, 2)
}

getDecimalSeparator(); // "." on a US locale machine.
getDecimalSeparator(); // "," on a FR locale machine.
于 2013-02-07T23:41:35.130 回答
0

网页中数值的格式不是基于客户端系统的设置,而是由页面的作者决定,可能基于预期或预期受众的语言。

浏览器不会根据系统设置重新格式化页面中文本中的数字。运气好的话,可能会有一个lang属性指示内容的语言,但我认为这不会是可靠的,甚至不会被广泛实施。

可以收集页面中的所有数字并根据以下内容猜测分隔符:

  1. 如果任何数字匹配/^[+-]?0?\.\d/,则小数分隔符为句点,千位分隔符为逗号
  2. 如果任何数字匹配/^[+-]?0?,\d/,则小数分隔符为逗号,千位分隔符为句点
  3. 如果任何数字匹配/\.\d\d\d\./,则千位分隔符是句点,小数分隔符是逗号
  4. 如果任何数字匹配/,\d\d\d,/,则千位分隔符为逗号,小数分隔符为句点

等等。

于 2013-02-08T02:14:38.323 回答
0

您可以尝试获取 htmllang属性,但仍有许多网页缺少该属性

于 2013-02-07T22:45:15.013 回答