删除、忽略或阻止IE中字符串中的null字符
Remove, ignore or prevent null characters in a string in IE
在数据文件的字符串中遇到空字符,这会导致IE出现问题。这里有一个代码笔;
http://codepen.io/gradualstudent/pen/DBExf
我能够在Chrome、Firefox、mac上的Safari以及Windows上的Chrome和Firefox中解析数据文件中的日期,但不能在IE中解析(9、10、11)。数据文件是一个简单的CSV读入d3.csv(...)
这样的字符串的一个示例表面上是"4/23/2014"
。但它无法在IE中解析为日期:
JSON.stringify(dt); // "4/23/2014"
new Date(dt); // [date] Invalid Date
Date.parse(dt); // NaN
尽管字符串文本的解析很好:
new Date("4/23/2014") // [date] Wed Apr 23 2014 00:00:00 GMT-0400
事实证明,数据文件中的字符串有很多空字符:
var dta = [];
for (var i=0; i<dt.length; i++) { dta[i] = dt.charAt(i); }
JSON.stringify(dta);
["", "4", "", "/", "", "2", "3", "", "/", "", "2", "0", "1", "4", ""]
我该如何去掉这些字符或阻止它们被读入?
清理发生问题的输入将是一个更干净的解决方案。但是,如果您必须在解析之前清理输出,这可能会起作用。
如果在解析日期字符串之前对其运行regex,则似乎可以解决问题。添加了Regex的代码笔中的代码段。
var dt = "4/23/2014";
$("#dt").html(new Date(dt))
//Clear everything except expected items in a date
// Ordinary null character
var dt1 = dt.replace(/[^0-9/]/ig, "");
$("#dt1").html(new Date(dt1))
//Or to specifically target the character causing the issues
// Ordinary null character
var dt2 = dt.replace(/['u200E]/ig, "");
$("#dt2").html(new Date(dt2))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
dt: <code id="dt"></code>
<br>dt1: <code id="dt1"></code>
<br>dt2: <code id="dt2"></code>
相关文章:
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- 无法获取属性'字符串'的未定义或null引用IE 11 ASP.NET
- PHP's json_decode返回空字符串(不是NULL)
- 为什么 Javascript 在变量赋值时将 null 转换为字符串
- 为什么不't空字符串==在JavaScript中为null
- 若字符串是某种东西,那个么值为null
- 具有null或未定义值的JavaScript字符串串联行为
- 若字符串为null,则通过启发式方法无法访问代码,将null赋值给变量
- JavaScript字符串串联中null的影响
- 将字符串传递给给出NULL的事件侦听器
- 如何删除“;NULL”;使用Javascript从sails.js中的JSON对象中提取字符串
- 未捕获的类型错误:将 innerhtml 设置为数组中的字符串时,无法设置 null 的属性 'innerHTM
- JavaScript WebSocket 非以 null 结尾的字符串
- 如果子字符串为 null,如何跳过并避免控制台中的错误
- JavaScript 检测字符串中的 NULL 值
- Ajax返回空字符串,而不是NULL值
- 返回字符串而不是null
- Regex返回null与返回空字符串
- 如何使用JavaScript测试空字符串/null