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

标签 java thymeleaf

有什么区别:

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

和 thymeleaf 特定:

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

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

最佳答案

以下是一些差异:

  • strings.replace 第一个参数不需要是字符串,可以为 null
  • strings.replace 第二个参数(您要搜索的参数)不是正则表达式,而 sdk String#replaceAll 将与正则表达式一起使用

您可以找到 Thymeleaf 似乎更可取的情况,例如。当您不想通过 null 检查或 toString 调用弄脏代码时。话虽这么说,我总是会使用 SDK API,因为

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

关于java - #strings 和标准 String 方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52551235/

相关文章:

Java 注释处理器 : check if TypeMirror implements specific generic interface

java - JAVA中数组乘以数组

html - Thymeleaf 加载资源失败

java - Spring MVC + Thymeleaf - 保存关系@ManyToOne

java - 检查二维数组中的 boolean 值

java - 具有关系或单字段 PK 的多个复合 id

java - 无法从 Google 的 IAB 框架捕获 IllegalStateException

spring - 每次都要重启spring mvc吗?

java - Thymeleaf 忽略未找到的片段

spring - 如何使用 Spring Boot 更新 ThymeLeaf