我正在使用java spring为一个网站开发一个eclipse项目。但是,无论我尝试什么,下面的字符串似乎都不同。如果有人可以告诉我该怎么做,那就太好了。
@RequestMapping(value = "/result", method = RequestMethod.GET)
public ModelAndView execute(@ModelAttribute("dummyForm") final DummyForm dummyForm, final Model model) {
// ...
final String str = dummyForm.getFirstName() + "_" + dummyForm.getLastName();
if(str.equals("Dummy_Smith")){
// ...
}
return mav;
}
使用此代码,当我使用dummyForm.setFirstName(" Dummy")和dummyForm.setLastName(" Smith")进行测试时: 印刷" str"在jsp中将显示" Dummy_Smith"正如所料。但是在if条件检查时,它总是返回false。 我尝试过str.compareTo(" Dummy_Smith"),然后返回-33。 如果我希望它返回真实,我该怎么办?
提前致谢。
答案 0 :(得分:0)
我敢打赌,字符串中有空格或不可见的字符,这样当你打印时,它们看起来就像是相同的字符串,但它们实际上并不相同。尝试从你要比较的字符串中删除任何空格,看看它返回的内容:
String trimmed = str.trim();
System.out.println(trimmed);
System.out.println(trimmed.compareTo("Dummy_Smith"));
来自true
来电的compareTo
值,如果该值等于0
(因此上面的第二个打印行)。