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