我有一个文件,其中包含双引号只对字符串类型,但我需要添加缺少双引号到其他字段,并写入使用java的文件。
例如
123 ,6 ,"abc@yahoo.com"
"
应转换为
"123 ","6 ","abc@yahoo.com" "
不修剪任何值,只是在字段周围添加缺少的文本限定符。我已经尝试过基于分隔符进行分割,然后将引号括起来,但它不起作用。
如果你解决了这样的问题,请分享。
您需要使用string.replaceAll
方法。
string.replaceAll("(^|,)(?!")([^,]+)", "$1"$2"");
演示有一个解决方案没有这么复杂的正则表达式:你必须分割你的输入由,
和包装得到的String
s:
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
您可以通过使用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);
}
保留空格并添加一些缺失的引号。
我试过了,下面是工作…
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);
}
请检查…
尝试使用简单的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("""",""");
}