#strings和标准String方法之间的区别

时间:2018-09-28 08:23:15

标签: java thymeleaf

两者之间有什么区别

${obj.title.replaceAll(' ', '-')

和百里香叶特异性的

${#strings.replace(obj.title, ' ', '-')}

我知道在第一个示例中我使用标准的String方法,而在第二个示例中我使用Thymeleaf的Strings类。 首选哪一个,为什么?当无法使用String类中的方法并且应将其替换为等效的Strings时,是否有任何特定情况?

1 个答案:

答案 0 :(得分:2)

有一些区别:

  • strings.replace的第一个参数不必为字符串,可以为空
  • strings.replace所要查找的第二个参数不是正则表达式,而SDK String#replaceAll将与正则表达式一起使用

您可以找到胸腺似乎更可取的情况,例如。当您不想使用null检查或toString调用弄脏代码时。话虽如此,我将始终使用SDK API,因为

  • 它的知名度和记载性大大提高,因此新开发者更容易理解
  • Java api将始终以向后兼容的方式进行更新; Tymeleaf api将来可能会更改实现细节,并且由于社区很小,您不确定它们将专注于向后兼容性。任何曾经必须在项目中升级第三方库的人都知道我在说什么。如果有一天他们决定使用正则表达式重新实现replace方法,那么您将不得不更改代码以转义正则表达式特殊字符。