0

我有一个这种格式的字符串:

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

我需要用这个签名创建一个函数:

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

all前一个字符串在哪里,key要替换(或添加)的给定键和value新值。

我考虑了一些解决方案,但它们很难阅读并且不是很优雅。我希望你们中的一个人能带来看起来更好的东西。

PS:我在使用正则表达式时没有问题,但它需要在没有任何 3rd 方库的情况下完成,只需标准 java 库。

谢谢!

4

2 回答 2

1

我可以问你为什么要使用字符串吗?我意识到在这个阶段改变可能为时已晚,但“地图”对于这种处理不是更好吗?然后你可以简单地使用非常恰当的(在这种情况下) 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 回答