我有一个输入文件,如下所示:
059790355;61033755;026466086;19 ;NOMBRE GENERICO APELLIDO GENERICO ;BAA;1CXX;1;2013-04-12;2014-02-12;352082056559802 ;
当我运行程序时,我得到输出:
059790355;61033755;026466086;19;NOMBREGENERICOAPELLIDOGENERICO;BAA;1CXX;1;2013-04-12;2014-02-12;352082056559802;
但我要求输出为:
059790355;61033755;026466086;19;NOMBRE GENERICO APELLIDO GENERICO;BAA;1CXX;1;2013-04-12;2014-02-12;352082056559802;
name属性应该有空格。 我的节目是:
{
System.out.println("Usage: APP <INPUT_FILE> <OUTPUT_FILE>");
return;
}
try {
File fout = new File(args[1]);
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
File file = new File(args[0]);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line= bufferedReader.readLine();
while ((line = bufferedReader.readLine()) != null) {
line = line.trim();
line = line.replaceAll("\\s+", "");
bw.write(line);
bw.newLine();
}
bw.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
如何解决这个问题?
答案 0 :(得分:2)
您可以替换分号周围的所有空格:
line=line.replaceAll("\\s*;\\s*", ";");
这会将foo; bar baz; 42 ;
之类的字符串转换为foo;bar baz;42;
答案 1 :(得分:0)
使用此正则表达式替换:
line = line.replaceAll("\\s+(?!\w)", "");
它替换了所有空格,后面没有单词字符(数字或字母或下划线)。
此外,删除line = line.trim();
,因为正则表达式将处理它,所以不需要它。
这是regex demo!