首页 > 解决方案 > 替换列表中的值

问题描述

我有一个包含两个值的列表,如下所示:
在 0:yesnonoyesyes
在 1:yes=1;no=0

我需要用'1'中'='之后的值替换'0'中的值。
我写了下面的代码:

有人可以帮忙吗

List<String> list = new ArrayList<>();
list.add("truetruefalsefalsefalse");
list.add("true=Ja;false=Nein");
String string0 = list.get(0);
String string1 = list.get(1);
String[] split = string1.split(";");
String replace = new String();
for (String string : split) {
  if (string0.contains(StringUtils.substringBefore(string, "="))) {

    replace = string0.replace(StringUtils.substringBefore(string, "="), StringUtils.substringAfter(string, "="));

  }
}

标签: javaarraylist

解决方案


替换后,您不会将值分配回列表。这可能是问题所在。
请查看您的程序的以下示例实现。

import java.util.ArrayList;
import java.util.List;
public class ReplaceValues{

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();
        list.add("truetruefalsefalsefalse");
        list.add("true=Ja;false=Nein");
        String[] split = list.get(0).split(";");

        for (String string : split) {
          String combination[] = string.split("=");     
          list.set(0, list.get(0).replaceAll(combination[0], combination[1]));
        }

        for(String item:list){
            System.out.println(item);
        }

    }
}

输出:

JaJaNeinNeinNein
true=Ja;false=Nein

注意:如果您有重叠的字符串,这将不起作用,例如。

true=ja
ue=t

因为它将再次用 t 替换 ue 并且整体结果将被破坏。这需要单独处理。


推荐阅读