Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在字符串比较中使用formatNumber返回的值_String_Jsp_Format_Jstl_Equals - Fatal编程技术网

String 如何在字符串比较中使用formatNumber返回的值

String 如何在字符串比较中使用formatNumber返回的值,string,jsp,format,jstl,equals,String,Jsp,Format,Jstl,Equals,我用这行代码来格式化一个数字: 带我当前语言环境(法语)的行上输出123 4567890 如果我使用以下代码: ${ref==test} 它返回false,为什么? 首先,我认为test不是字符串,因此我尝试: 但是${ref==test2}仍然返回false。看起来法语区域设置使用了不间断的空格字符(“十六进制”),十六进制0xA0(160十进制)),但您使用的是常规空格(字符32) 这应打印真: <fmt:formatNumber type="number" pattern="#

我用这行代码来格式化一个数字:

带我当前语言环境(法语)的行上输出
123 4567890

如果我使用以下代码:


${ref==test}

它返回false,为什么?

首先,我认为
test
不是字符串,因此我尝试:


但是
${ref==test2}
仍然返回false。

看起来法语区域设置使用了不间断的空格字符(“十六进制”),十六进制0xA0(160十进制)),但您使用的是常规空格(字符32)

这应打印

<fmt:formatNumber type="number" pattern="###,#######" value="1234567890" var="test"/>
<% pageContext.setAttribute("nbsp", String.valueOf('\u00a0'));%>
<c:set var="ref" value="123${nbsp}4567890"/>
ref is ${ref} <br />
test is ${test} <br />
${ref == test}  

ref是${ref}
测试为${test}
${ref==test}
请阅读我的问题,上面提到它打印的是“123 4567890”。在这种情况下,我怀疑这可能是一个不正确的事实。尝试一个简单的小JSP,其中只包含我发布的行,看看您的问题是否仍然存在,当您执行代码时,它会打印为true?好的,我想我找到了它-看起来像是nbsp,而不是space它可能是这样的,但不,它仍然打印为false。如果我检查页面源代码,${test}确实包含一个常规空格。为什么不比较实际的模型值,而不是特定于区域设置的格式化人类表示形式?@BalusC是的,你是对的。当然,我所尝试的有点傻。实际上我并不真的需要它。我只是在玩
formatNumber
replace
方法,我偶然发现了这种奇怪的行为。我不是在寻找更好/不同的解决方案。我只是想理解为什么这个测试失败,为什么它不能工作。我可能在使用jstl存储/比较数据的方式上遗漏了一些东西。