gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:51 25 4
gpt4 key购买 nike

我正在尝试检查一个字符串(过滤器)是否包含在另一个字符串(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/

25 4 0
文章推荐: html - 如何使响应圈
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com