以下代码适用于所有主流浏览器,如Firefox,Opera,Chrome,Safari等,但在IE 6,7,8中显示出意想不到的结果(到目前为止我测试的版本)。
目标:将字符串拆分为第一个下划线(_),从而产生子串“you”和“and_me”。
IE只显示“你”部分,其余部分显示为未定义。
<script type="text/javascript">
var str = "you_and_me";
var res = str.split(/_(.+)?/);
alert(res);
</script>
解决方案:我该怎么做才能使IE正常工作?
答案 0 :(得分:2)
如果你真的需要支持古老的IE版本,那么请停止使用带有正则表达式的.split()
,然后编写自己的不使用正则表达式的分割函数。这应该比试图找出IE的旧版本有什么不稳定的正则表达式差异那样麻烦。
function oneSplit(s, sep) {
var result = [];
var i = s.indexOf(sep);
if (i !== -1) {
result.push(s.slice(0, i));
result.push(s.slice(i + 1));
} else {
result.push(s);
}
return result;
}
var str = "you_and_me";
var result = oneSplit(str, "_");
document.write(JSON.stringify(result));
P.S。当我在Chrome中运行你的代码时,我在数组的末尾得到一个空字符串,这可能不是预期的。