[英]Returning a value in a specific format (java)
不知道标题是否说明了我真正想做的事,
我有一条信息,目前以
[[1/2, 1/2], 1]
但是我需要它以以下格式打印
{{true@1/2, false@1/2}@1}
我该怎么做,我确实设置了toString方法,但是我不确定如何获取“ true @”并删除[[,但是我得到了{
我现在有
@Override
public String toString() {
String s = "{" + this.knowledge + "}";
return s;
任何帮助将非常感激。
问候,
辛
我假设您只能访问以下格式的字符串(this.knowledge): [[str,str], str]
,在这种情况下,以下解决方案将起作用:
@Override
public String toString() {
StringBuilder strB = new StringBuilder();
for (int i=0; i<this.knowledge.length(); i++) {
if(this.knowledge.charAt(i)!='[' && this.knowledge.charAt(i)!=']' && this.knowledge.charAt(i)!=',')
strB.append(this.knowledge.charAt(i));
}
String[] strs = strB.toString().split("\\s+");
return "{{true@" + strs[0] + ", false@" + strs[1]+ "}@" + strs[2] + "}";
}
不知道这个答案是否可以解释您真正想做什么,但是,
您拥有的“信息”看起来很像您从列表列表中获得的默认打印输出。 我能够看到与“类似”的东西:
List<String> inner = new ArrayList<String>();
inner.add("1/2");
inner.add("1/2");
List<Object> outer = new ArrayList<Object>();
outer.add(inner);
outer.add("1");
System.out.println(outer);
如果假设knowledge
是(集合中的)某个已知集合是正确的,则可以创建一个格式化方法,该方法可以采用已知元素并将其放置在正确的位置。 如果“ true”和“ false”是硬编码的文本字符串,则可能类似于:
public String formatKnowledge(List list) {
return "{{true@" + ((List)list.get(0)).get(0) + ", false@" +
((List)list.get(0)).get(1) + "}@" + list.get(1) + "}";
}
现在很明显,这仅适用于列表输入的确切类型。 如果列表可能更复杂,则需要更复杂的逻辑才能在适当的位置创建正确的文本(和花括号)。 同样,如果以某种方式计算了“ true”和“ false”,则还需要添加该逻辑。
免责声明:上面的格式方法仅用于说明目的。 作者不容忍使用疯狂的盲目转换和疯狂的盲目索引...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.