在文件中添加缺少的双引号

时间:2015-05-28 10:13:19

标签: java string file csv

我有一个文件,其中只包含String类型的双引号,但我需要将缺少的双引号添加到其他字段并使用java写入文件。

例如

123  ,6   ,"abc@yahoo.com"
                                            "

应转换为

"123  ","6   ","abc@yahoo.com"                                         "

不修剪任何值只是在字段周围添加缺少的文本限定符。我试过基于分隔符拆分然后包装引号,但它不起作用。

如果你已经解决了这样的问题,请分享。

5 个答案:

答案 0 :(得分:1)

您需要使用string.replaceAll方法。

string.replaceAll("(^|,)(?!\")([^,]+)", "$1\"$2\"");

DEMO

答案 1 :(得分:1)

有一个没有这么复杂的正则表达式的解决方案:你必须将输入分开,并包装生成的String

String[] splitted = input.split(",");
for (int i = 0; i < splitted.size(); ++i) {
    if (splitted[i].charAt(0) != '"') {
        splitted[i] = "\"" + splitted[i] + "\"";
    }
}
String output = String.join(",", Arrays.asList(splitted)); // or any other joining technic, this is from Java 8

答案 2 :(得分:0)

您可以使用String类中的split()方法轻松完成此操作,只需在需要时添加引号即可。 基本上,我会尝试这样的事情:

public static void main (String... args) {
    String st = "123  ,6   ,\"abc@yahoo.com";
    String[] results = st.split(",");
    String result = "";

    for (String s : results) {
        if (!s.startsWith("\""))
            s = "\"" + s + "\"";
        if (!s.endsWith("\""))
            s+="\"";

        s+=",";

        result += s;
    }

    System.out.println(st);
    System.out.println("-------------");
    System.out.println(result);
}

这样可以保留空格并添加一些缺失的引号。

答案 3 :(得分:0)

我试过,下面的工作正在......

public static void test()
{
    String str = "123  ,6   ,\"abc@yahoo.com                                                 \"";
    String result = "",temp="";
    StringTokenizer token = new StringTokenizer(str,",");
    while(token.hasMoreTokens())
    {
        temp = token.nextToken();
        if(!temp.startsWith("\""))
            result += "\""+temp+"\"";
        else
            result += temp;
    }
    System.out.println(result);

}

请检查......

答案 4 :(得分:0)

尝试使用简单的foreach和if循环来检查值是否有双引号,然后在值中添加引号。

for(Object obj:YourContainer){    
   if(!value.contains("\"")){
        String s = "\"" + value + "\"";
    }
}

如果您使用双引号获取""Test""之类的字段,请尝试使用替换功能。

String s;
for(Object obj:YourContainer){    
   if(!value.contains("\"")){
        s = "\"" + value + "\"";
    }
    s = s.replace("\"\"","\"");
}