0

私はこのフォーマットの文字列を持っています:

"key=some value|otherkey=other value|key3=yet another value"

このシグネチャを使用して関数を作成する必要があります。

public String update(String all,String key, String value)

all前の文字列、key置換(または追加)するための指定されたキー、およびvalue新しい値はどこにありますか。

私はいくつかの解決策を考えましたが、それらは読みにくく、あまりエレガントではありません。私はあなたたちの一人がもっと良く見える何かを持って来ることができることを望んでいました。

PS:正規表現の使用に問題はありませんが、サードパーティのライブラリなしで実行する必要があります。標準のJavaライブラリだけです。

ありがとう!

4

2 に答える 2

1

これに String を使用している理由を尋ねてもよろしいですか? 今の段階で変えるには遅すぎると思いますが、こういう処理は「地図」の方がいいのではないでしょうか?次に、非常に適切な (この場合) Map メソッドを使用して単純に更新できますか?

例:

myMap.put(K key, V value)//you could use a HashMap maybe.

SP

于 2010-08-12T21:48:58.037 に答える
1

正規表現なしの以下の単純なコード。

public String update(String all, String key, String value) {    
    StringBuilder result = new StringBuilder();
    boolean replaced = false;   
    for (String old : all.split("[|]")) {
        if (old.startsWith(key + "=")) {
            replaced = true;
            result.append("|" + key + "=" + value);
        } else {
            result.append("|" + old);
        }
    }
    if ( ! replaced) {
        result.append("|" + key + "=" + value);
    }    
    return result.toString().substring(1); // avoid initial '|'
}
于 2010-08-12T22:16:26.690 に答える