我有一个数字输入,在 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/