3

messages.properties構文の行を持つファイルがあります<key>=<string>。それぞれkeyがユニークですが、stringそうではありません。多くのキーが同じ文字列を持つことができます。また、同じフォルダーに、から文字列を読み取る Java クラスがいくつかありますmessages.properties。メソッドを介して文字列を取得しますMessages.getString("<key>")。だから私がする必要があるのは、から値を読み取ることによってMessages.getString("<key>")Javaクラスをに変換することです。これは、トリックを行う @potong の sed onliner です。"<key>"messages.properties

sed 's|^\([^=]*\)=\(.*\)|s@Messages.getString("\1")@"\2"@g|;s/\\/\\\\/g' messages.properties |
sed -i -f - *.java

ただし、これに関する問題は、一部のバージョンでは機能しないことですmessages.properties。これを解決するには、スクリプトをどのように変更すればよいですか? これは関連する質問です検索して sed に置き換え ます。

サンプルの messages.properties

Sting.1=Str
Sting.2=String
Sting.3=String
Sting.4=Strring
Sting.5=Str

サンプル Java クラス

System.Out.println(Messages.getString("Sting.1"));
System.Out.println(Messages.getString("Sting.2"));
System.Out.println(Messages.getString("Sting.3"));
System.Out.println(Messages.getString("Sting.4"));
System.Out.println(Messages.getString("Sting.5"));

必要な Java クラス

System.Out.println("Str");
System.Out.println("String");
System.Out.println("String");
System.Out.println("Strring");
System.Out.println("Str");
4

1 に答える 1

1

実際の問題は、日食が分裂したことでした

Messages.getString("String.3")

2行に、

    Messages
        .getString("String.3")

だからこれはうまくいった。

sed 's|^\([^=]*\)=\(.*\)|s@.getString("\1")@"\2"@g|;s/\\/\\\\/g' messages.properties |
sed -i -f - *.java
于 2012-04-05T04:11:57.063 に答える