我是否必须在每个`String`比较中使用`trim()`?

时间:2015-12-01 10:40:12

标签: java string

想象一下,我有两个java.lang.String对象,一个来自数据库,另一个是用户输入。为了比较它们,是否有必要将trim()放在比较的两边?它不是看起来有点开销吗?

if (userInput.trim().equals(dbString.trim())) {
    .....
}

有更好的方法吗?我担心我可能忘记在我想要比较它们的每个地方添加trim()

2 个答案:

答案 0 :(得分:4)

如果您控制数据库(并且没有人可以更改它)您可以信任您的控件和验证,然后再在其上写入数据。因此,以后的比较可以在以后定期进行而不用担心。

BUT

如果您有使用额外空白字符(通过某些编辑或其他内容)获取数据的危险。

是的,您必须执行此受控比较。

如果是这种情况,在比较时不要忘记忘记一个trim(),只需创建一个私有方法(或HelperClass中的静态方法,如果将通过多次使用...我猜.. 服务?),为了让它更清晰,不要忘记使用trim():

private boolean areEquals(String a, String b) {
   return a.trim().equals(b.trim());
}

使用:

if (areEquals(userInput, dbInput)) {
    // do something
}

答案 1 :(得分:0)

是的,这是一个很大的开销,因为每个trim可能会构造一个新的字符串实例,然后在比较之后抛弃它。

请确保事先获得正确的输入。因此,当您从数据库或用户输入中读取值时,请修剪这些值。对于代码中的其余程序流,您可以确保已经修剪了所有字符串。

这也可以防止您在将代码中的字符串比较之前忘记放置trim