我有2个相同的测试文件。对它们进行差异返回:
<(od -c file1.csv)<(od -c file2.csv)
file1: a b c \ r \ n a b c \ r \ n a b c
file2: a b c \ r \ n a b c \ r \ n a b c \ r \ n
显然,Excel在创建.csv文件
时附加\ r \ n我的csv解析功能:
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
var rows = contents.split(/[\r\n]{1,}/g);
}
如何在上面的解析函数中修复我的正则表达式?我的hasDups()函数仅适用于文件2
function toLowerCase(s) {
if (typeof(s) === 'string') {
return s.toLowerCase();
}
return s;
}
function hasDups(arr) {
return (arr.length !== _.uniq(arr, false, toLowerCase).length);
}
$scope.add= function() {
var subs = [];
angular.forEach($scope.csvModel, function(sub) {
var subCopy = angular.copy(sub);
// Concatenates each field into one separated by spaces
subs.push(Object.keys(subCopy).map(function(key) {
return subCopy[key];
}).join(' '));
});
}
if ($scope.hasDups(subs)) {
console.log("dups exsist")
}
}
示例文件test.csv:
ABC
ABC
ABC
ABC
ABC
输出(行)应该删除所有不相关的换行符,空格等,并且每行只显示一个abc。
答案 0 :(得分:0)
如果您的目标是完全省略\r \n
,请不要使用方括号,因为它适用于范围和字符类,例如[a-d] or [a-zA-Z0-9]
您可以尝试将正则表达式更改为var rows = contents.split(/ *\r \n */g);
它应该为测试文件1和2提供相同的数组
希望它有所帮助!