将camelCase字符串转换为在Gradle中以字符串分隔(即Groovy)

时间:2013-06-11 12:02:45

标签: string groovy gradle

我在gradle构建脚本中有一堆字符串属性,它位于camelCase中(例如"jmxConsoleWeb"),我想将每个属性分成dash-separated(例如jmx-console-web)字符串。

这样做是否有“非hackish”方式?

2 个答案:

答案 0 :(得分:8)

我已经解决了这个问题:

public static String dashSeparated(String s) { 
     return s.replaceAll(/\B[A-Z]/) { '-' + it }.toLowerCase() 
}

另请查看here

答案 1 :(得分:6)

如果您不介意额外的依赖性,可以使用番石榴。这是一个Groovy脚本,演示了它的用法:

@Grab( 'com.google.guava:guava:13.0.1' )
import static com.google.common.base.CaseFormat.*

String.metaClass.caseFormat = { from, to ->
  from.to( to, delegate )
}

assert 'varName'.caseFormat( LOWER_CAMEL, UPPER_UNDERSCORE )       == 'VAR_NAME'
assert 'var-name'.caseFormat( LOWER_HYPHEN, UPPER_CAMEL )          == 'VarName'
assert 'var_name'.caseFormat( LOWER_UNDERSCORE, LOWER_CAMEL )      == 'varName'
assert 'VAR_NAME'.caseFormat( UPPER_UNDERSCORE, LOWER_UNDERSCORE ) == 'var_name'
assert 'VarName'.caseFormat( UPPER_CAMEL, LOWER_HYPHEN )           == 'var-name'

当然,在Gradle脚本中,如果您希望将其方法用于构建本身,则需要将guava导入构建脚本依赖项