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存储/比较数据的方式上遗漏了一些东西。