的Java:在CSV添加引号数据文件

问题描述:

我想引号CSV文件添加到资料。以下是我所做的方法。我相信有使用正则表达式或其他方法更简单的方法。想知道这一点。的Java:在CSV添加引号数据文件

public List<String> addQuotes2List(List<String> list, String delimiter){ 
     List<String> tempList = new ArrayList<>(); 
     String temp="", value; 
     Integer i=-1, j=0; 

     for(String s1: list){ 
      //println("S1 - "+s1+" - "+Arrays.asList(s1.split("\\"+delimiter))); 
      i++; 

tempList = Arrays.asList(s1.split("\\"+delimiter)); 

      //println(tempList); 
      temp="";j=0; 
      for(String s2:tempList){ 
       if(j>0) 
        temp+=delimiter;     

       //println("S2 - "+s2); 
       temp+="\""+s2+"\""; 

       j++;     
      } 
      list.set(i, temp);   
     } 

     return list; 
    } 

输入

tempList.clear(); 
    tempList.add("Sushanth.Bobby.Lloyds"); 
    tempList.add("Watch.a.lot.of.movies"); 
    tempList.add("main.hobby.is.programming"); 
    tempList.add("programming.is.dangerous.addiction.of.all"); 
    tempList = a.addQuotes2List(tempList,"."); 

    println("tempList - "+tempList.size()); 
    for(String s:tempList) 
     println(s); 

输出

tempList - 4 
"Sushanth"."Bobby"."Lloyds" 
"Watch"."a"."lot"."of"."movies" 
"main"."hobby"."is"."programming" 
"programming"."is"."dangerous"."addiction"."of"."all" 

感谢, 舒尚特

,如果你只是处理字符串。 你可能只是replce <>到< “”>并追加<“>在开始和结束。

public List<String> addQuotes2List2(List<String> list, String delimiter) { 
    List<String> tempList = new ArrayList<String>(); 
    // null check list and delimiter 
    String rStr = "\""+delimiter+"\""; 
    String rmsg = ""; 
    for (String s1 : list) { 
     rmsg = s1.replace(delimiter, rStr); 
     rmsg = "\""+rmsg+"\""; 
     tempList.add(rmsg); 
    } 
    return tempList; 
} 

正则表达式可能没有此必要。(更换和的replaceAll通过正则表达式制造)

如果您使用的是Java 8中,您可以使用流,使其更具可读性。

public List<String> addQuotes2List(List<String> list, String delimiter){ 
    return list.stream() 
    .map(line -> line.split("\\"+delimiter)) 
    .map(this::addQuotes) 
    .map(entries -> String.join(delimiter, entries)) 
    .collect(Collectors.toList()); 
} 

private List<String> addQuotes(String[] entries) { 
    return Arrays.stream(entries) 
    .map(entry -> String.format("%s", entry)) 
    .collect(Collectors.toList()); 
}