如何在groovy中将输入转换为大写

ssn*_*one 1 groovy case-sensitive uppercase

我正在接受 JSON 输入,并希望将其转换为大写。有人可以帮我解决我的代码吗

int synchronizeSingleUnit(ApiResultDTO apiResultDTO, def inputJSON, int totalUpdates) {
    def sql = synchronizationApiSqlHelperService.getUnitsSql()
    String unit = getEmptyIfValueNull(inputJSON.unit)

    def session = sessionFactory_apiDb.openSession() as SessionImpl
    def connection = session.connection()
    def sqlConnection = new Sql(connection)

    try {
        sqlConnection.execute(sql, [unit:unit])
    } catch (Exception ex) {
        // Preload result with statement to be executed
        apiResultDTO.setJsonFailingPart(inputJSON)
        apiResultDTO.setFailedSql(sql, [unit:unit])
        throw new ExceptionWrapper(apiResultDTO, ex)
    } finally {
        session.close()
        connection.close()
    }
Run Code Online (Sandbox Code Playgroud)

Mat*_*and 7

您可以使用 java String.toUpperCase() ,如下所示:

String unit = getEmptyIfValueNull(inputJSON.unit)
String uCaseUnit = unit.toUpperCase()

Run Code Online (Sandbox Code Playgroud)

<--编辑-->

作为评论和补充,我不知道方法的具体细节,getEmptyIfValueNull但从名称来看,您只想在表达式inputJSON.unit返回 null 时返回一个空字符串。

Groovy 有两个特殊的运算符,可以使此类表达式更易于编写。

使用这两个你可以更简洁地重写你的代码:

String unit = inputJSON.unit?.toUpperCase() ?: ''
Run Code Online (Sandbox Code Playgroud)

解释:

  • inputJSON.unit?.toUpperCase()- 求值inputJSON.unit,如果该表达式返回 null,则仅从整个表达式返回 null(从不执行该toUpperCase方法)。如果inputJSON.unit返回非空值,则事情就像使用 一样工作inputJSON.unit.toUpperCase()
  • ... ?: ''- 接受一个表达式,如果它不是空字符串或 null,则返回它,否则返回空字符串。

其中第一个运算符.?专门用于处理空值,第二个运算符?:使用常规真理,它包括空值,但比空值更具包容性。

上面的写法有几种,例如:

String unit = (inputJSON.unit ?: '').toUpperCase()
Run Code Online (Sandbox Code Playgroud)

但在我看来,第一个版本“流畅”得更好。每个人都有自己的。