我有一个这种格式的字符串:
"key=some value|otherkey=other value|key3=yet another value"
我需要使用此签名创建一个函数:
public String update(String all,String key, String value)
all
是前一个字符串,key
要替换(或添加)和value
新值的给定键。
我想到了一些解决方案,但它们难以阅读而且不是很优雅。我希望你们中的一个人可以带来看起来更好的东西。
PS:我在使用正则表达式方面没有问题但是它需要在没有任何第三方库的情况下完成,只需要标准的java lib。
谢谢!
答案 0 :(得分:1)
我可以问你为什么要使用字符串吗?我意识到在这个阶段改变可能为时已晚,但对于这种处理,“地图”不会更好吗?然后你可以简单地使用非常适合的(在这种情况下)Map方法更新?
示例:
myMap.put(K key, V value)//you could use a HashMap maybe.
SP
答案 1 :(得分: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 '|'
}