Java 如何附加/前置存储在arraylist中的文本

Java 如何附加/前置存储在arraylist中的文本,java,string,arraylist,Java,String,Arraylist,我正在尝试编写一个Java程序,将html代码附加到文本并在文本前加上前缀。我们的想法是使用一个文本文件,其中包含一些由&&分隔的内容,并使用适当的html标记附加/前置文本。具体来说,我正在尝试自动生成引导列的html。我向用户请求一个文件,然后将其读入arraylist。如果程序工作正常,数组列表中的每个点都应该包含分隔符和&之间的文本。如何编写一个编辑方法,该方法将数组列表作为参数,添加适当的标记,并返回一个新的数组列表,以便传递给写入方法 **编辑:我应该提到的是,append和prep

我正在尝试编写一个Java程序,将html代码附加到文本并在文本前加上前缀。我们的想法是使用一个文本文件,其中包含一些由
&&
分隔的内容,并使用适当的html标记附加/前置文本。具体来说,我正在尝试自动生成引导列的html。我向用户请求一个文件,然后将其读入arraylist。如果程序工作正常,数组列表中的每个点都应该包含分隔符
和&
之间的文本。如何编写一个
编辑方法
,该方法将数组列表作为参数,添加适当的标记,并返回一个新的数组列表,以便传递给写入方法

**编辑:我应该提到的是,append和prepend方法只是我想要写入每个文本分隔条目的位置标记。欢迎任何关于如何编写该方法的建议

public static ArrayList<String> readLines() throws IOException {
    ArrayList<String> lines = new ArrayList<>();

    JOptionPane.showMessageDialog(null, "Please choose a file");
    JFileChooser input = new JFileChooser();
    int a = input.showOpenDialog(null);
    String file = "";

    if (a == JFileChooser.APPROVE_OPTION) {
        File selectedFile = input.getSelectedFile();
        file = selectedFile.getPath();
    }

    //use file input to read in line one at a time
    Scanner read = new Scanner(new File(file));
    read.useDelimiter("&&");
    while(read.hasNext()){
        lines.add(read.next());
    }
    return lines;
}

public static void editFile(ArrayList<String> formalLines){
    //appendText() --> insert content ---> prependText() --> return arrayList to write to file
}

public static void appendText () {
    System.out.println("<div id=\"page-content-wrapper\">");
    System.out.println("  <div class=\"container-fluid\">");
    System.out.println("    <div class=\"col-xs-6 col-md-4\">");
}

public static void prependText(){
    System.out.println("    </div>");
    System.out.println("  </div>");
    System.out.println("</div>");
}

public static void writeFile(ArrayList<String> formalFinalArray) throws FileNotFoundException, UnsupportedEncodingException {
    try {
        FileOutputStream fos = new FileOutputStream("output");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(formalFinalArray); // write MenuArray to ObjectOutputStream
        oos.close();
    } catch(Exception ex) {
        ex.printStackTrace();
      }
}
publicstaticarraylistreadlines()引发IOException{
ArrayList行=新的ArrayList();
showMessageDialog(null,“请选择文件”);
JFileChooser输入=新的JFileChooser();
int a=input.showOpenDialog(null);
字符串文件=”;
if(a==JFileChooser.APPROVE\u选项){
File selectedFile=input.getSelectedFile();
file=selectedFile.getPath();
}
//使用文件输入一次读取一行
扫描仪读取=新扫描仪(新文件(文件));
read.useDelimiter(&&&);
while(read.hasNext()){
line.add(read.next());
}
回流线;
}
公共静态无效编辑文件(ArrayList formalLines){
//appendText()-->insert content-->prependText()-->return arrayList to write to file
}
公共静态无效文本(){
System.out.println(“”);
System.out.println(“”);
System.out.println(“”);
}
公共静态void prependText(){
System.out.println(“”);
System.out.println(“”);
System.out.println(“”);
}
公共静态void writeFile(ArrayList formalFinalArray)引发FileNotFoundException、UnsupportedEncodingException{
试一试{
FileOutputStream fos=新的FileOutputStream(“输出”);
ObjectOutputStream oos=新的ObjectOutputStream(fos);
oos.writeObject(formalFinalArray);//将菜单数组写入ObjectOutputStream
oos.close();
}捕获(例外情况除外){
例如printStackTrace();
}
}

您可以确保append和prepend方法也返回ArrayList,并使用addAll方法合并所有3个ArrayList(在editFile()方法中),例如:

我猜这就是你想要的:

public static void editFile(ArrayList<String> formalLines){
        //appendText() --> insert content ---> prependText() --> return arrayList to write to file
        ArrayList<String> newList = new ArrayList<String>();
        try {
            for(String item:readLines()){
                newList.addAll(appendText());
                newList.add(item);
                newList.addAll(prependText());
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static ArrayList<String> appendText () {

        ArrayList<String> append = new ArrayList<String>();
        append.add("<div id=\"page-content-wrapper\">");
        append.add("  <div class=\"container-fluid\">");
        append.add("    <div class=\"col-xs-6 col-md-4\">");
        return append;
    }

    public static ArrayList<String> prependText(){
        ArrayList<String> prepend = new ArrayList<String>();
        prepend.add("    </div>");
        prepend.add("  </div>");
        prepend.add("</div>");
        return prepend;

    }
publicstaticvoideditfile(arraylistformallines){
//appendText()-->insert content-->prependText()-->return arrayList to write to file
ArrayList newList=新的ArrayList();
试一试{
对于(字符串项:readLines()){
addAll(appendText());
新建列表。添加(项);
addAll(prependText());
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
公共静态ArrayList appendText(){
ArrayList append=新的ArrayList();
附加.添加(“”);
附加.添加(“”);
附加.添加(“”);
返回追加;
}
公共静态ArrayList prependText(){
ArrayList prepend=新的ArrayList();
在前面加上(“”);
在前面加上(“”);
在前面加上(“”);
返回预结束;
}

您可以确保append和prepend方法也返回ArrayList,并使用addAll方法合并所有3个ArrayList(在editFile()方法中),例如:

我猜这就是你想要的:

public static void editFile(ArrayList<String> formalLines){
        //appendText() --> insert content ---> prependText() --> return arrayList to write to file
        ArrayList<String> newList = new ArrayList<String>();
        try {
            for(String item:readLines()){
                newList.addAll(appendText());
                newList.add(item);
                newList.addAll(prependText());
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static ArrayList<String> appendText () {

        ArrayList<String> append = new ArrayList<String>();
        append.add("<div id=\"page-content-wrapper\">");
        append.add("  <div class=\"container-fluid\">");
        append.add("    <div class=\"col-xs-6 col-md-4\">");
        return append;
    }

    public static ArrayList<String> prependText(){
        ArrayList<String> prepend = new ArrayList<String>();
        prepend.add("    </div>");
        prepend.add("  </div>");
        prepend.add("</div>");
        return prepend;

    }
publicstaticvoideditfile(arraylistformallines){
//appendText()-->insert content-->prependText()-->return arrayList to write to file
ArrayList newList=新的ArrayList();
试一试{
对于(字符串项:readLines()){
addAll(appendText());
新建列表。添加(项);
addAll(prependText());
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
公共静态ArrayList appendText(){
ArrayList append=新的ArrayList();
附加.添加(“”);
附加.添加(“”);
附加.添加(“”);
返回追加;
}
公共静态ArrayList prependText(){
ArrayList prepend=新的ArrayList();
在前面加上(“”);
在前面加上(“”);
在前面加上(“”);
返回预结束;
}
使用StringBuilder

StringBuilder lines = new StringBuilder();
将起始标记添加到它,然后添加到执行此操作的位置

lines.add(read.next);
改为这样做

String tagStart = "<div>";

String tagEnd = "</div>";

lines.append(tagStart).append(read.next).append(tagEnd);
希望这是有帮助的

您可以编写“getPrependText()”方法来获取startTag

String startTag = getPrependTex();
和getPrependText();将返回所需的标记以进行预结束

使用StringBuilder

StringBuilder lines = new StringBuilder();
将起始标记添加到它,然后添加到执行此操作的位置

lines.add(read.next);
改为这样做

String tagStart = "<div>";

String tagEnd = "</div>";

lines.append(tagStart).append(read.next).append(tagEnd);
希望这是有帮助的

您可以编写“getPrependText()”方法来获取startTag

String startTag = getPrependTex();

和getPrependText();将返回所需的标记以进行预结束

这相当简单。如果我理解正确,你会喜欢你在中间使用数组的字符串。

所以我们在文件中有一行一行的字符串
ArrayList
?这样做很容易,因为我们可以通过索引访问行号。因此,要进行预结束,我们可以从预结束字符串集中的最后一个字符串开始(因为我们正在添加索引0,并让它们自然地向上移动)。因此,我们将:

void prependText() {
    lines.add(0, "    <div class=\"col-xs-6 col-md-4\">");
    lines.add(0, "  <div class=\"container-fluid\">");
    lines.add(0, "<div id=\"page-content-wrapper\">");
}

void appendText() {
    lines.add("    </div>");
    lines.add("  </div>");
    lines.add("</div>");
}
如果需要换行,请根据需要在每个字符串的末尾插入'\n'。
最后,
newList
是您猜到的新列表。

这相当简单。如果我理解正确,你会喜欢你在中间使用数组的字符串。

所以我们有一行一行的
Arr