解析csv格式的java函數 | |
|
評論
你的方法的確很輕量級。
之前的一個項目用到csvjdbc(http://sourceforge.net/projects/csvjdbc),提供了Java 訪問 csv 文件的的 JDBC 驅動,它其實是把一個 csv 文件當做一個數據庫表來操作,提供簡單的查詢 回復 更多評論
之前的一個項目用到csvjdbc(http://sourceforge.net/projects/csvjdbc),提供了Java 訪問 csv 文件的的 JDBC 驅動,它其實是把一個 csv 文件當做一個數據庫表來操作,提供簡單的查詢 回復 更多評論
應網友的要求又用javascript實現了一個。用了正則雖然編碼方便一些,但是難以描述錯誤的格式,所以只能處理結構正確的csv了,而且某些特殊的情況下也有可能解析錯誤:
var st = 'asdf,"""asd,fgg""","asd""fgh","as""d,f""gh",ab cd ef\nasdf,"asd"",""fgg","asd""fgh","as""d,f""gh",ab cd ef\nasdf,"asd,fgg","asd""fgh","as""d,f""gh",ab cd ef';
st = st.replace(/([^,])""([^,])/g,"$1$quote;$2")
st = st.replace(/""/g,"$quote;")
st = st.replace(/,"/g,",$left;")
st = st.replace(/",/g,"$right;,")
var ar = st.split("\n");
var result = [];
for(var i=0;i<ar.length;i++){
var a= ar[i].split(",");
for(var j=0;j<a.length;j++){
if(/\$left;/.test(a[j]) && !(/\$right;/.test(a[j]))){
a[j]=a[j]+","+a[j+1];
a.splice(j+1,1);
j--;
}else{
a[j]=a[j].replace(/(\$left;)|(\$right;)/g,"").replace(/\$quote;/g,'"');
}
}
result[i]= a;
}
document.write("<table border=1>")
for(var i=0;i<result.length;i++){
document.write("<tr>");
for(var j=0;j<result[i].length;j++)
document.write("<td>"+result[i][j]+"</td>");
document.write("</tr>");
}
document.write("</table>")
回復 更多評論
var st = 'asdf,"""asd,fgg""","asd""fgh","as""d,f""gh",ab cd ef\nasdf,"asd"",""fgg","asd""fgh","as""d,f""gh",ab cd ef\nasdf,"asd,fgg","asd""fgh","as""d,f""gh",ab cd ef';
st = st.replace(/([^,])""([^,])/g,"$1$quote;$2")
st = st.replace(/""/g,"$quote;")
st = st.replace(/,"/g,",$left;")
st = st.replace(/",/g,"$right;,")
var ar = st.split("\n");
var result = [];
for(var i=0;i<ar.length;i++){
var a= ar[i].split(",");
for(var j=0;j<a.length;j++){
if(/\$left;/.test(a[j]) && !(/\$right;/.test(a[j]))){
a[j]=a[j]+","+a[j+1];
a.splice(j+1,1);
j--;
}else{
a[j]=a[j].replace(/(\$left;)|(\$right;)/g,"").replace(/\$quote;/g,'"');
}
}
result[i]= a;
}
document.write("<table border=1>")
for(var i=0;i<result.length;i++){
document.write("<tr>");
for(var j=0;j<result[i].length;j++)
document.write("<td>"+result[i][j]+"</td>");
document.write("</tr>");
}
document.write("</table>")
回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
![]() |
||
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關文章:
|
||