gpt4 book ai didi

java - 根据条件如何创建 StringBuffer 并向其中追加数据

转载 作者:行者123 更新时间:2023-12-02 04:03:17 24 4
gpt4 key购买 nike

我的ArrayList包含字符串格式的值列表

ArrayList里面的数据是这样的

ArrayList<String> my_list = new ArrayList<String>();

my_list.add("Today Date");
my_list.add("Some Content1");
my_list.add("*****");
my_list.add("Some Content2");
my_list.add("Some Content3");
my_list.add("*****");
my_list.add("Some Content5");
my_list.add("Some Content6");
my_list.add("*****");
my_list.add("Some Content8");

我正在尝试为分隔符 ***** 之后出现的内容创建一个单独的 StringBuffer

我已经尝试过这个方法了

import java.io.FileNotFoundException;
import java.util.ArrayList;

import org.json.JSONArray;

public class Test {
public static void main(String[] args) throws FileNotFoundException {
ArrayList<String> my_list = new ArrayList<String>();
JSONArray jsarray = new JSONArray();
my_list.add("Today Date");
my_list.add("Some Content1");
my_list.add("*****");
my_list.add("Some Content2");
my_list.add("Some Content3");
my_list.add("*****");
my_list.add("Some Content5");
my_list.add("Some Content6");
my_list.add("*****");
my_list.add("Some Content8");
for(int i=0;i<my_list.size();i++)
{
String linedata = my_list.get(i);
if(linedata.equals("*****"))
{
StringBuffer sb = new StringBuffer();
sb.append(linedata);
jsarray.put(sb.toString());
}
}
System.out.println(jsarray);
}
}

我从中得到的输出是

["*****","*****","*****"]   

预期的输出应该是这样的

["Today Date Some Content1", "Some Content2 Some Content3", "Some Content5 Some Content6", "Some Content8"]

您能告诉我我到底在哪里犯了错误以及如何解决这个问题吗

最佳答案

你正在做与你的意图完全相反的事情;您忽略了内容并添加了“*****”分隔符。顺便说一句,如果你不需要这里线程安全,你可以使用StringBuilder而不是StringBuffer

您不需要在每次遇到分隔符时都创建一个StringBuilder,而是需要在遇到分隔符之前创建并准备好一个StringBuilder。如果遇到分隔符,则不要附加到它;将其转换为字符串,将其放入数组中,然后清除它。另请确保在循环完成后将最后一个字符串放置在数组中的最后一个分隔符之后。

StringBuilder sb = new StringBuilder();
for(int i=0;i<my_list.size();i++)
{
String linedata = my_list.get(i);
if(linedata.equals("*****"))
{
jsarray.put(sb.toString());
sb.setLength(0); // clear
}
else
{
sb.append(linedata);
}
}
jsarray.put(sb.toString()); // last one!

关于java - 根据条件如何创建 StringBuffer 并向其中追加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34661932/

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