1. function split(str,splitor) 
  2.     if(splitor==nil) then 
  3.         splitor="," 
  4.     end 
  5.     local strArray={} 
  6.     local strStart=1 
  7.     local splitorLen = string.len(splitor) 
  8.     local index=string.find(str,splitor,strStart,true
  9.     if(index==nil) then 
  10.         strArray[1]=str 
  11.         return strArray 
  12.     end 
  13.     local i=1 
  14.     while index do 
  15.         strArray[i]=string.sub(str,strStart,index-1) 
  16.         i=i+1 
  17.         strStart=index+splitorLen 
  18.         index = string.find(str,splitor,strStart,true
  19.     end 
  20.     strArray[i]=string.sub(str,strStart,string.len(str)) 
  21.     return strArray 
  22. end 
  23.  
  24. -- 去掉行首和行尾的双引号和单引号 
  25. function sf_trim(s) 
  26.     local _, quotedPart = string.match(s, "([\"'])(.-)%1"
  27.     return quotedPart 
  28. end 
  29.  
  30. function ArrToTabStr(tbStrArr, tbCol) 
  31.     local szOutPut = "" 
  32.     local nFirstLine = 1 
  33.     for _, nCol in pairs(tbCol) do 
  34.         if tbStrArr[nCol] ~= nil then 
  35.             if nFirstLine == 1 then 
  36.                 szOutPut = szOutPut..sf_trim(tbStrArr[nCol]) 
  37.                 nFirstLine = 0 
  38.             else 
  39.                 szOutPut = szOutPut..'\t'..sf_trim(tbStrArr[nCol]) 
  40.             end 
  41.         end 
  42.     end 
  43.     szOutPut = szOutPut..'\n' 
  44.     return szOutPut 
  45. end 
  46.  
  47. --[[ 
  48. 本来听取裴凯的意见,准备增加另外一个屏蔽列表的,但是这个工具只是自己用,麻烦只是一次,就不多余操心了。 
  49. ]] 
  50. function fCsvToTabFile(szFilePath, tbSelCol) 
  51.     --打开csv文件 
  52.     local tbRet = {} 
  53.     local hCsvFile = io.open(szFilePath) 
  54.     if not hCsvFile then 
  55.         print("打不开指定文件:", szFilePath) 
  56.         return 
  57.     end 
  58.      
  59.     --创建输出的tab文件 
  60.     local hTabFile = io.open("test.txt""w"
  61.     if not hTabFile then 
  62.         print("无法创建输出文件"
  63.         return 
  64.     end 
  65.      
  66.     local nLineNum = 0 
  67.     while 1 do 
  68.         line = hCsvFile:read("*l"
  69.         if not line then 
  70.             break 
  71.         end
  72.         local strOutPut = ArrToTabStr(split(line), tbSelCol) 
  73.         if strOutPut ~= "" then 
  74.             hTabFile:write(strOutPut) 
  75.         end 
  76.         nLineNum = nLineNum + 1 
  77.     end 
  78.     hCsvFile:close() 
  79.     hTabFile:close() 
  80. end