使用jQuery清理CSV文件

时间:2014-04-11 04:17:28

标签: jquery regex csv replace

我让员工从一个系统将数据导出为CSV,并使用它来导入CMS中的内容。

问题是我们的CSV导入脚本的CSV导出格式不够干净。

jQuery是否具备以下功能?

我想转换一个字符串,例如:

Hello,"Goodbye, Goodbye","Goodbye",Hello,Hello,Hello,"Goodbye, Goodbye"

要:

"Hello","Goodbye, Goodbye","Goodbye","Hello","Hello","Hello","Goodbye, Goodbye"

- 以便每个条目始终包含在引号中,而不仅仅是包含逗号的条目(,)。

我一直在使用.replace(),但无法找到一致的方法来处理这个问题。

2 个答案:

答案 0 :(得分:1)

var value = $("#text").val(); 

//你好,“再见,再见”,“再见”,你好,你好,你好,“再见,再见”

value = value.replace(',', '","'); 

// Hello“,”“Goodbye”,“Goodbye”“,”“Goodbye”“,”Hello“,”Hello“,”Hello“,”“Goodbye”,“Goodbye”

value = '"' + value + '"'; 

//“你好”,“”再见“,”再见“,”“再见”“,”你好“,”你好“,”你好“,”“再见”,“再见”“

value = value.replace ('""','"'); 

//将所有双“”替换为“。”您将获得所需的输出

* 更新的答案: *

替换仅替换特定字符串的第一次出现。 请尝试以下方法:

   var value =  $('#test').val();
   value = value.replace(/,/g, '","');
   value = '"' + value + '"';
   value = value.replace (/""/g,'"');
   $('#result').html(value);

答案 1 :(得分:1)

检查此解决方案,它将首先找到所有正确的出现并用特定字符串替换它们

更正不正确的字符串,然后给出正确的结果

请参阅javascript控制台以查看更改

        <script type='text/javascript'>//<![CDATA[ 
        $(window).load(function(){

          OurTestData = 'Hello,"Goodbye, Goodbye","Goodbye",Hello,Hello,Hello,"Goodbye, Goodbye"';
          console.log(OurTestData);
            var pattern = /"([^"]+)"/g;
            var match;
            var MatchedArray = [];
            while(match = pattern.exec(OurTestData)) {
                MatchedArray.push(match[1]);
            }

             OurTestData = OurTestData.replace(/"([^"]+)"/g, "CorrectSavedForLaterConversion");

             splittedArray = OurTestData.split(',');
             var preOutputString ="";

              preOutputString= '"' + splittedArray.join('" , "') + '"';



         /**
           Replace With Correct String
         */
           i=0;

         while(preOutputString.indexOf('CorrectSavedForLaterConversion') >= 0){

                preOutputString=  preOutputString.replace(/CorrectSavedForLaterConversion/,MatchedArray[i]) 
            i++;
          }

          console.log(preOutputString);

        });//]]>  

        </script>