3

Google Guava を使用すると、次のように内部の文字列フィールドを簡単に置き換える文字列ユーティリティがあります。

String query = mydb..sp_mySP ${userId}, ${groupId}, ${someOtherField}

私はこのようなことができる場所:

StringUtil.setString(query)
   .setField("userId", "123")
   .setField("groupId", "456")
   .setField("someOtherField", "12-12-12");

結果の文字列は次のようになります。

mydb..sp_mySP 123, 456, 12-12-12

もちろん、${<field>}操作前のように文字列フィールドのパターンを設定します...

とにかく、これは私のアプローチです:

public class StringUtil {
    public class FieldModifier {
        private String s;
        public FieldModifier(String s){
            this.s = s;
        }
        public FieldModifier setField(String fieldName, Object fieldValue){
            String value = String.valueOf(fieldValue);
            s = modifyField(s, fieldName, value);
            return new FieldModifier(s); 
        }
        public String get() {
                return s;
        }
        private String modifyField(String s, String fieldName, String fieldValue){
            String modified = "";
            return modified;
        }
    }
    public FieldModifier parse(String s){
        FieldModifier fm = new FieldModifier(s);
        return fm; 
    }
}

modifyFieldしたがって、この場合、単純な方法で文字列を変更する実際のコードを関数に入れるだけで済みます。また、parse関数を静的にする方法があれば、何StringUtil.parse(...)もせずに実行できますが、new StringUtil().parse(...)これは本当に見栄えがよくありません。

4

3 に答える 3

3

はい、String.format()です。

String s = "Hey %s! Cool %s, right?";
System.out.println(String.format(s, "xybrek", "feature"));
于 2012-09-13T09:08:31.637 に答える
3

グアバにはそのようなものはありません。文字列テンプレートを作成できるSpEL (Spring Expression Language) や、 VelocityFreemarkerなどの他のテンプレート フレームワークを確認できます。

于 2012-09-13T09:13:40.553 に答える
2

グアバを使用していますか?いいえ。

最近、これをサポートするための拡張が要求されましたが (こちらを参照)。

とにかく、これは Apache Commons Lang の StrSubstitutor を使用して実行できます。

于 2012-09-13T09:39:37.707 に答える