我有一个文件,其中只包含String类型的双引号,但我需要将缺少的双引号添加到其他字段并使用java写入文件。
例如
123 ,6 ,"abc@yahoo.com"
"
应转换为
"123 ","6 ","abc@yahoo.com" "
不修剪任何值只是在字段周围添加缺少的文本限定符。我试过基于分隔符拆分然后包装引号,但它不起作用。
如果你已经解决了这样的问题,请分享。
答案 0 :(得分:1)
答案 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("\"\"","\"");
}