react-native - 我如何根据 React Native 中的当前语言环境解析用户输入的小数,使用点或逗号作为小数点分隔符?

标签 react-native localization

我有一个数字输入,在 React Native 中弹出一个“数字”文本输入。

在许多语言环境中,这会弹出一个数字键盘,其中用逗号分隔小数点,而不是点。这导致输入像“100,1”而不是“100.1”。

JavaScript 的 Number(value) 仅适用于点小数,不适用于逗号。如何确定用户的当前格式以便正确解析输入?

最佳答案

此函数将根据当前区域设置解析十进制输入,using react-native-localize :

import { getNumberFormatSettings } from "react-native-localize";

export function parseLocaleNumber(stringNumber: string) {
  const { decimalSeparator, groupingSeparator } = getNumberFormatSettings();

  return Number(
    stringNumber
      .replace(new RegExp(`\\${groupingSeparator}`, "g"), "")
      .replace(new RegExp(`\\${decimalSeparator}`), "."),
  );
}

为了更好地衡量,这个补充函数提供了基于语言环境的 toFixed 功能:

export function toFixedLocale(value: number, numDigits: number) {
  const standardFixedString = value.toFixed(numDigits);

  const { decimalSeparator } = getNumberFormatSettings();

  if (decimalSeparator === ",") {
    return standardFixedString.replace(".", ",");
  } else {
    return standardFixedString; // Locale matches JavaScript default
  }
}

(基于 https://stackoverflow.com/a/42213804/152711 的 parseLocaleNumber)

关于react-native - 我如何根据 React Native 中的当前语言环境解析用户输入的小数,使用点或逗号作为小数点分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243865/

相关文章:

reactjs - React Native - 无法创建文本输入

ios - 启用双倍长度伪语言在 Xcode 7.3 中不起作用

javascript - 将元素放置在 react native 的右上角

react-native - 在 JSX 和 React Native 中使用符号

javascript - .map 中的条件 if 语句

ios - 从 Objective-C 中的货币代码获取货币符号

c++ - 如何为 C++ (MSVC 2008) 解决方案创建语言附属 DLL?

c# - 当我在组合框中选择一种语言时,如何更改所有表单的文本?

c# - C#中资源文件的动态引用

reactjs - 阻止 FlowType 检查 node_modules 中的错误