代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

Java中的文本操作

  •  0
  • Pablo Fernandez  · 技术社区  · 16 年前

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

    我需要创建一个具有此签名的函数:

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

    在哪里? all key 要替换(或添加)的给定键,以及 value

    我想了一些解决方案,但它们很难阅读,也不是很优雅。我希望你们中的一个能带些好看点的来。

    PS:我在使用regex方面没有问题,但是它需要在没有任何第三方库的情况下完成,只有标准java库。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Split Personality    16 年前

    我能问一下你为什么要用字符串来做这个吗?我意识到在这个阶段改变可能太晚了,但是“地图”对这种处理不是更好吗?然后您可以简单地使用非常合适的(在本例中)Map方法进行更新?

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

    服务提供商

        2
  •  1
  •   tucuxi    16 年前

    下面是简单的代码,没有正则表达式。

    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 '|'
    }