我使用的是Java,我有一个包含10列和5行的CSV文件。我想用这个条件将它解析成另一个CSV文件。如果来自任何行的第一个单元格为空,则跳过该行,然后跳转到下一行,依此类推。我的代码只读取所有行并打印它们,我想要具备该条件并写入另一个CSV文件。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class CSV {
public static void main(String[] args) throws FileNotFoundException {
String x;
Scanner scanner = new Scanner(new File("Book1.csv"));
scanner.useDelimiter(",");
while(scanner.hasNext()){
System.out.print(scanner.next());
}
scanner.close();
}
}
示例:
答案 0 :(得分:1)
不是分隔整个文件,而是逐行分隔:
public static void main(String[] args) throws FileNotFoundException {
String x;
Scanner scanner = new Scanner(new File("Book1.csv"));
while(scanner.hasNextLine()){ // If there is another line in the file
x = scanner.nextLine(); // Extract that line
String[] values = x.split(","); // Split that line at the commas
if (!values[0].equals("")) { // If the first value is not equal to empty
System.out.print(x); // Print the line
}
}
scanner.close();
}
答案 1 :(得分:1)
您可以利用每条记录不同的事实。因此,您可以使用BufferedReader#readLine()
检索完整行,而不是直接在Scanner
上使用File
类:
BufferedReader br = new BufferedReader(new FileReader("Book1.csv"));
String myLine = br.readLine();
while (myLine != null) {
// do whatever you want with the line
// read new line
myLine = br.readLine();
}
这样myLine
包含如下字符串:
"John,M,Mi,1111,US,OR,..."
",David,criss,2222,US,MI,..."
一旦你有一行,trim()
就行,并检查第一个字符是否是你的分隔符。在这种情况下,该行应该被忽略。
myLine = myLine.trim();
if (",".equals(myLine.at(0))) {
// First field empty. Ignore
} else {
// First field not empty. Write to new file
}