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