我有以下代码从android中的csv文件中读取。当我的列值中有逗号时,它可以正常工作。
File file = new File(IMPORT_ITEM_FILE.getPath());
BufferedReader bufRdr = null;
try {
bufRdr = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
}
String line = null;
try {
while ((line = bufRdr.readLine()) != null) {
String[] insertValues = line.split(",");
string column1 = insertValues[1];
string column2 = insertValues[2];
}
bufRdr.close();
}
我的csv行就像:用户名,“某些字符串,带逗号”,“2740740,2740608”,“some,string,with逗号”
如何在列值中转义逗号以读取列。
答案 0 :(得分:3)
我建议你使用http://opencsv.sourceforge.net/。如果您的CSV文件源文件格式正确,它将为您处理所有事情。
使用示例:
InputStream csvStream = getAssets().open(yourCSVFile);
InputStreamReader csvStreamReader = new InputStreamReader(csvStream);
CSVReader csvReader = new CSVReader(csvStreamReader);
String[] line;
while ((line = csvReader.readNext()) != null) {
String example = line[0]; // first item of your csv row
}
答案 1 :(得分:1)
我建议使用RegEx进行拆分。您可以使用以下内容:\"(.*?)\",?
我在我使用的计算机上没有Java设置,但像这样的应该工作。不能保证它会编译。
String myString = "\"name of user\",\"official address, city\",\"2740740, 2740608\",,\"address, city, state\""
Pattern myPattern = Pattern.compile("\"(.*?)\",?");
Matcher myMatcher = myPattern.matcher(myString); // myPattern to match against string
while (myMatcher.find())
{
System.out.println(myMatcher.group(1));
}