java - 替换列表中的值
问题描述
我有一个包含两个值的列表,如下所示:
在 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, "="));
}
}
解决方案
替换后,您不会将值分配回列表。这可能是问题所在。
请查看您的程序的以下示例实现。
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 并且整体结果将被破坏。这需要单独处理。
推荐阅读
- facebook - Azure Functions 和 Facebook 登录
- c# - C# 中的 Windows 10 语言更改弹出菜单焦点问题
- github - Git 文件夹在 github 存储库中看起来是灰色的
- r - R tidyverse,将数据重塑为每个主题一行,但有几列受到影响
- verilog - 如何在 Verilog 中实例化具有 reg 端口的模块?
- haskell - 学习 Haskell 并想做一个反向波兰符号评估器
- node.js - 'graphql' 不是内部或外部命令、可运行程序或批处理文件。在部署棱镜时
- php - 在登录表单下拉菜单中列出已经注册的用户 - 终极会员插件
- python - 支持 GPU 的 Levenberg-Marquardt 算法
- c# - System.Text.Json 反序列化来自 API 调用的嵌套对象 - 数据包装在父 JSON 属性中