Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 替换列表中的值_Java_Arraylist - Fatal编程技术网

Java 替换列表中的值

Java 替换列表中的值,java,arraylist,Java,Arraylist,我有一个包含如下两个值的列表: 在0:YesNoYesYes时 在1时:是=1;否=0 我需要将“0”中的值替换为“1”中“=”之后的值。 我写了以下代码: 有人能帮忙吗 List<String> list = new ArrayList<>(); list.add("truetruefalsefalsefalse"); list.add("true=Ja;false=Nein"); String string0 = list.get(0); String string1

我有一个包含如下两个值的列表:
在0:YesNoYesYes时
在1时:是=1;否=0

我需要将“0”中的值替换为“1”中“=”之后的值。
我写了以下代码:

有人能帮忙吗

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, "="));

  }
}
List List=new ArrayList();
列表。添加(“真假假假”);
添加(“true=Ja;false=Nein”);
String string0=list.get(0);
String string1=list.get(1);
String[]split=string1.split(“;”);
字符串替换=新字符串();
用于(字符串:拆分){
if(string0.contains(StringUtils.substringBefore(string,“=”)){
replace=string0.replace(StringUtils.substringBefore(string,“=”),StringUtils.substringAfter(string,“=”);
}
}

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

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);
        }

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

true=ja
ue=t
因为它将再次用t替换ue,并且整体结果将被破坏。
这需要明智地处理

我不知道您的问题是什么(错误描述),所以我必须猜测:您总是替换原始字符串,您应该替换新字符串(从上一次迭代开始)。(假设代码的其余部分没有干扰,
StringUtils
按预期工作)
String replacement=string0。。。对于(…replacement=reaplacement.replace(…
您永远不会更改列表中的值或
string0
,您只是基于
string0
的不变值覆盖变量
replace
,因此它必须替换旧的更改
true=ja
ue=t