3

Gradle ビルド スクリプトに多数の文字列プロパティがあり、これはcamelCase(たとえば) にあり、代わりにそれぞれを(たとえば) 文字列に"jmxConsoleWeb"分割したいと考えています。dash-separatedjmx-console-web

これを行うための「非ハック」な方法はありますか?

4

2 に答える 2

8

余分な依存関係を気にしない場合は、Guava を使用できます。以下は、その使用方法を示す 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 を buildScript 依存関係にインポートする必要があります。

于 2013-06-11T19:46:09.697 に答える
8

私はこのように解決しました:

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

こちらもご覧ください

于 2013-06-11T12:14:47.990 に答える