CSV文件的Java嵌套条件解析
如果我的示例数据是如下所示的CSV文件:CSV文件的Java嵌套条件解析,java,parsing,csv,import,Java,Parsing,Csv,Import,如果我的示例数据是如下所示的CSV文件: a,,,b, 36,28,90,5,24 最好的方式是什么 myStringArray=[a[36,28,90],[b[5,24]] 或 myStringArray1={a,b};//这部分我可以做 myStringArray2={36,28,90},{5,24} 我使用的是基于Java的处理,但我的问题更多的是关于Java的一般功能,所以请原谅我的代码格式化,如果它看起来不正确的话 这是我的导入类: class dTable { int row
a,,,b,
36,28,90,5,24
最好的方式是什么
myStringArray=[a[36,28,90],[b[5,24]]
或
myStringArray1={a,b};//这部分我可以做myStringArray2={36,28,90},{5,24} 我使用的是基于Java的处理,但我的问题更多的是关于Java的一般功能,所以请原谅我的代码格式化,如果它看起来不正确的话 这是我的导入类:
class dTable {
int rowCount;
int columnCount;
String[][] data;
String filename;
dTable(String _filename) {
filename = _filename;
}
void load() {
String[] rows = loadStrings(filename);
String[] columns = split(rows[0], ',');
rowCount = rows.length;
columnCount = columns.length;
//set the size of the matrix
data = new String[rows.length][columns.length];
// add column pieces into data matrix
for (int i = 0; i < rows.length; i++) {
String[] colEntries = split(rows[i], ',');
for (int j = 0; j < columns.length; j++) {
data[i][j] = colEntries[j];
}
}
}
}
类数据表{
整数行数;
int列计数;
字符串[][]数据;
字符串文件名;
dTable(字符串\u文件名){
文件名=_文件名;
}
空荷载(){
String[]行=加载字符串(文件名);
字符串[]列=拆分(行[0],',');
rowCount=rows.length;
columnCount=columns.length;
//设置矩阵的大小
数据=新字符串[rows.length][columns.length];
//将列片段添加到数据矩阵中
for(int i=0;i
下面是我在一个解析类中的未工作尝试:
class dParse {
String[] bMaj;
String[][] bMin;
dParse() {
}
void getList(int integer) {
ArrayList dMaj = new ArrayList();
ArrayList dMin = new ArrayList();
String[][] minimums;
String[] _rowNameMaj = table.data[0]; //get data first to match
String[] _rowName = table.data[integer]; // get data to fill
//get first variables
for (int i = 0; i<_rowName.length; i++) { //iterate over
ArrayList tempMin = new ArrayList();
if (trim(_rowNameMaj[i]).length() != 0) {
dMaj.add(_rowNameMaj[i]);
}
}
//place maj values from arraylist into an array
String[] _bMaj = (String[]) dMaj.toArray(new String[0]);
bMaj = _bMaj; //set value to global variable
//min values
ArrayList bigOne = new ArrayList();
int count = 0;
for (int i = 0; i<_rowName.length; i++) { //iterate over
ArrayList tempMin = new ArrayList();
if (trim(_rowNameMaj[i]).length() != 0) { //check if box is not empty & set count to 0
//tempMin = dMaj.get(i); // set inner list
//println("maj " + count + " " + _rowNameMaj[i]);
tempMin.add(_rowName[i]);
count++;
//println("min" + count + " " + tempMin);
}
else if (trim(_rowNameMaj[i]).length() == 0) { //if next box is empty, add to count
count++;
tempMin.add(_rowName[i]);
//println("min" + count + " ");
}
minimums = new String[_bMaj.length][];
/various unworking attempts below
//place min values from arraylist into an array
//String[] temp_bMin = (String[]) tempMin.toArray(new String[0]);
//fl[] = append((new String(temp_bMin)), fl);
for (int n = 0; n< bMaj.lenth; n++ ) {
count[level]mums[n] = (String[]) toArray(new String[0]);
// println(minimums[n]);
// }
tempMin.clear(); //clear temporaryList
}
}
String[] getMaj() {
return bMaj;
}
String[][] getMin() {
return bMin;
}
}
dParse类{
字符串[]bMaj;
字符串[][]bMin;
dParse(){
}
void getList(整数){
ArrayList dMaj=新的ArrayList();
ArrayList dMin=新的ArrayList();
字符串[][]最小值;
String[]\u rowNameMaj=table.data[0];//首先获取要匹配的数据
String[]_rowName=table.data[integer];//获取要填充的数据
//获取第一个变量
对于(int i=0;iDimitar…也许一个库(如或该页面上其他库的链接)会很有用?但是,如果您坚持使用自己的CSV解析器,请查看该类。伪代码:
class Item {
String name;
List<String> values;
}
String[] names = line1.split(",");
String[] data = line2.split(",");
List<Item> items = new ArrayList<Item>();
Item curItem = null;
for (int i=0; i<data.length, i++)
{
if (names[i].isEmpty())
{
if (curItem == null) throw "first name is empty";
}
else
{
curItem = new Item();
items.add(curItem);
}
curItem.values.add(data[i]);
}
类项{
字符串名;
列表值;
}
字符串[]名称=line1.split(“,”);
String[]data=line2.split(“,”);
列表项=新建ArrayList();
Item curItem=null;
对于(int i=0;i