如何从.csv文件格式中读取两个连续逗号作为java中的唯一值
假设csv文件包含如何从.csv文件格式中读取两个连续逗号作为java中的唯一值,java,csv,stringtokenizer,opencsv,Java,Csv,Stringtokenizer,Opencsv,假设csv文件包含 1,112,,ASIF 下面的代码消除了两个连续逗号之间的空值。 提供的代码超出了要求 String p1=null, p2=null; while ((lineData = Buffreadr.readLine()) != null) { row = new Vector(); int i=0; StringTokenizer st = new StringTokenizer(lineData,
1,112,,ASIF
下面的代码消除了两个连续逗号之间的空值。
提供的代码超出了要求
String p1=null, p2=null;
while ((lineData = Buffreadr.readLine()) != null)
{
row = new Vector(); int i=0;
StringTokenizer st = new StringTokenizer(lineData, ",");
while(st.hasMoreTokens())
{
row.addElement(st.nextElement());
if (row.get(i).toString().startsWith("\"")==true)
{
while(row.get(i).toString().endsWith("\"")==false)
{
p1= row.get(i).toString();
p2= st.nextElement().toString();
row.set(i,p1+", "+p2);
}
String CellValue= row.get(i).toString();
CellValue= CellValue.substring(1, CellValue.length() - 1);
row.set(i,CellValue);
//System.out.println(" Final Cell Value : "+row.get(i).toString());
}
eror=row.get(i).toString();
try
{
eror=eror.replace('\'',' ');
eror=eror.replace('[' , ' ');
eror=eror.replace(']' , ' ');
//System.out.println("Error "+ eror);
row.remove(i);
row.insertElementAt(eror, i);
}
catch (Exception e)
{
System.out.println("Error exception "+ eror);
}
//}
i++;
}
如何从.csv文件格式中读取两个连续逗号作为java中的唯一值 只需将整行读入字符串,然后执行
string.split(“,”)
生成的数组应该正好包含您要查找的内容
如果需要检查“转义”逗号,那么查询将需要一些正则表达式,而不是简单的“,”
StringTokenizer
skpis是空令牌。这是他们的行为。来自JLS
StringTokenizer
是一个遗留类,出于兼容性原因保留它,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人改用String的split方法或java.util.regex包
只需使用
String.split(“,”)
就完成了。下面是一个通过拆分到字符串数组来完成此操作的示例。更改的行标记为注释
// Start of your code.
row = new Vector(); int i=0;
String[] st = lineData.split(","); // Changed
for (String s : st) { // Changed
row.addElement(s); // Changed
if (row.get(i).toString().startsWith("\"") == true) {
while (row.get(i).toString().endsWith("\"") == false) {
p1 = row.get(i).toString();
p2 = s.toString(); // Changed
row.set(i, p1 + ", " + p2);
}
...// Rest of Code here
}
在java中读取为唯一值是什么意思?唯一是指在java中打开csv文件时作为空单元格值可见的单独或现有值excel@Anugoonj:非常感谢,您提供的信息毫无疑问是有用的。但我已经在遗留软件上做了一些改变……这似乎是另一种方式。有没有可能使用这个代码?可能吧。我不打算用10行代码来做2可以做的事情,在10年的Java编程中,我从来都不需要StringTokenizer,所以我真的不能帮你:)@RajuS,StringTokenizer默认情况下忽略空值,你必须使用split。@vzamanillo:你能用任何例子来解释string.split(“,”)吗??
// Start of your code.
row = new Vector(); int i=0;
String[] st = lineData.split(","); // Changed
for (String s : st) { // Changed
row.addElement(s); // Changed
if (row.get(i).toString().startsWith("\"") == true) {
while (row.get(i).toString().endsWith("\"") == false) {
p1 = row.get(i).toString();
p2 = s.toString(); // Changed
row.set(i, p1 + ", " + p2);
}
...// Rest of Code here
}