如何在Java中从textfield中获取波斯数字并转换为double?
如何将“۱۲۳۴۵”波斯字符串数字转换为双精度 我想从文本字段中获取波斯数字,并将其保存在双变量中。我试过:如何在Java中从textfield中获取波斯数字并转换为double?,java,Java,如何将“۱۲۳۴۵”波斯字符串数字转换为双精度 我想从文本字段中获取波斯数字,并将其保存在双变量中。我试过: product.setSellPrice(Double.parseDouble(txtProductSalePrice.getText())); 但这会抛出由以下原因引起的:java.lang.NumberFormatException:对于输入字符串:,如果您使用它可以解决您的问题。将你的精确性应用到你的文本中,这个库会为你做其他的事情 PS:您应该使用适当的波斯语字体,您可以将字符
product.setSellPrice(Double.parseDouble(txtProductSalePrice.getText()));
但这会抛出由以下原因引起的:java.lang.NumberFormatException:对于输入字符串:
,如果您使用它可以解决您的问题。将你的精确性应用到你的文本中,这个库会为你做其他的事情
PS:您应该使用适当的波斯语字体,您可以将字符串分解为字符,并使用例如,
tocharray()
对字符进行迭代,然后将每个数字转换为等效的英语数字
String number = "";
for (char c : txtProductSalePrice.toCharArray()) {
if (c == "۱") {
number.concat("1");
continue;
}
if (c == "۲") {
number.concat("2");
continue;
}
....
}
return new BigDecimal(number).doubleValue();
我相信这可能会有所改进,而且我也不完全确定
char
是否支持非罗马字母。所以您希望将波斯语文本转换为十进制输出。搜索一些库或者自己动手,我不相信java有一个默认库来做这件事。这个答案很有用。仅提及这一点也可以帮助删除我的答案。