java - Equals() 和 indexOf() 不能像我预期的那样使用 NumberFormat

标签 java number-formatting

我正在尝试检查一个字符串(过滤器)是否包含在另一个字符串(formattedAmount)中,即过滤 formattedAmount 的子字符串。

我无法让它工作,所以我只是将代码更改为使用“equals()”而不是“indexOf()”,纯粹是为了简化测试。 equals 方法似乎也没有像我预期的那样工作。

这是我编写的一个虚拟脚本,它复制了我正在尝试做的事情:

import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.Locale;


public class utils
{

    public utils()
    {
    }

    public static void main(String[] args) throws Exception 
    {   
        String filter = "333 333,44";
        Number amount = new BigDecimal(333333.44);

        NumberFormat nf = NumberFormat.getNumberInstance(Locale.FRANCE);
        nf.setMinimumFractionDigits(2);

        String formattedAmount = nf.format(amount);

        if (formattedAmount.equals(filter)) 
        {
            System.out.println("Working");
            }
    }
}

为什么不输入 If 语句有什么想法吗?

谢谢

最佳答案

一个简单的 println 将揭示真相:FRANCE 语言环境的千位分隔符是不是空格字符:

System.out.println((int)formattedAmount.charAt(3) + " " + (int)filter.charAt(3));

打印:

160 32

因此,您的两个字符串不相等。

尝试

char s = 160;
String filter = "333" + s + "333,44";

关于java - Equals() 和 indexOf() 不能像我预期的那样使用 NumberFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007178/

相关文章:

java - org.mockito.exceptions.misusing.InvalidUseOfMatchersException 当我没有匹配器时

java - 如何在json和java中创建子项,以及如何在javascript中获取子项的值?

php - 重新格式化字符串数组中的数字 PHP

python - pandas read_table 带有正则表达式分隔符,因为负数没有中间空格

excel - 如何确保 Excel 不会更改其他语言版本中数据标签的数字格式?

java - 转换为 JSON 时如何使用 Java Enum 的属性

java - 如何声明 Java 数组并向其中插入数据

java - 如何在java中检查两个csv/xml文件是否相同

c - 二进制 "become"什么时候是十进制或十六进制?十六进制 "faster"是十进制吗?

python - 如何在 python 中将十进制 0 打印为 000