gpt4 book ai didi

java - 根据一个对象的多个属性值构建String

转载 作者:行者123 更新时间:2023-11-30 10:20:25 25 4
gpt4 key购买 nike

我有一个包含三个 boolean 值的对象,我必须根据它们的值构建一个字符串。现在我正在使用的方法是这样的:

if(a)
string.append("a");
if(string.len!=0) {
if(b) {
if(c) {
string.append(", ").append("b").append(" and ").append("c");
}
else {
string.append(" and ").append("b");
}
}
else {
//check for c and add "and" string appropriately
}
}

// then again an else part when string length is not zero and I check these values again

有更好的方法吗?

这段代码对我有用

final String result = Arrays.asList(values).stream()
.filter(o -> o != null)
.distinct()
.collect(Collectors.joining(", "))
.replaceAll(", (a|b|c)$", " and $1");

最佳答案

假设您想输出类似a、b 和c 的内容(请参阅我的评论),这可以解决问题:

final boolean a = true, b = true, c = true;
final String[] values = new String[] {a ? "a" : null, b ? "b" : null, c ? "c" : null};
final String result = Arrays.asList(values).stream()
.filter(o -> o != null) // discard all null (false) values in the list
.collect(Collectors.joining(", ")) // join all elements by concatenating with ','
.replaceAll(", (a|b|c)$", " and $1"); // replace last ',' with 'and'

在性能方面,这可能会比您的代码差一点,因为它首先构建一个逗号分隔的字符串并将最后一个 , 替换为 and 但在您的情况下差异应该可以忽略不计。

关于java - 根据一个对象的多个属性值构建String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48220613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com