这真的很令人惊讶。我无法在IE中进行简单的字符串比较工作。
"6/17/2015 3:21:39 PM".split(' ')[2].trim() == "PM"
返回 false !
"6/17/2015 3:21:39 PM".split(' ')[2].trim()
正确返回“PM”,但比较失败。
我尝试了各种各样的技巧,包括自定义分割功能,但无济于事。
即使拆分了单个数字字符串值,parseInt也会返回NaN。
答案 0 :(得分:1)
是字符问题:
您的PM
"PM".length //returns 4
^^^^ -> String.fromCharCode(8206, 8206, 80, 77)
我的PM
"PM".length //returns 2
^^^^ -> String.fromCharCode(80, 77)
解决方案:替换不需要的字符。
"6/17/2015 3:21:39 PM".replace(/[^\d\w/: ]+/gi,"").split(' ')[2].trim() == "PM" //true!
答案 1 :(得分:1)
作为强力方法,您可以通过插入.replace(/[^\d\w:/ ]/g, '')
"6/17/2015 3:21:39 PM".replace(/[^\d\w:/ ]/g, '').split(' ')[2].trim()
答案 2 :(得分:0)
您的PM
存在问题。
我将您的PM复制到文本编辑器中并在Hex编辑器中打开它。这是输出:
您会在PM
之前发现一些奇怪的字符。
以下是正常情况:
在Google中搜索E2 80 8E
个字符会提供指向this页面的链接,该页面显示它是从左到右标记的Unicode字符
答案 3 :(得分:0)
获取代码并打印出字符代码,您将获得:
34 8206 54 8206 47 8206 49 55
8206 47 8206 50 48 49 53 8206
32 8206 51 8206 58 8206 50 49
8206 58 8206 51 57 8206 32 8206
80 77 34 46 115 112 108 105
116 40 39 32 39 41 91 50
93 46 116 114 105 109 40 41
32 61 61 32 34 80 77 34
那些8206
个字符是left-to-right mark
character进入你的代码,可能是从某个地方复制字符串。标记是一个控制字符,在打印时不可见,它只影响相邻字符的显示方式。
这是造成问题的最后一个。拆分字符串的最后一个字符串不是"PM"
,而是"\u200EPM"
。将它与字符串"PM"
进行比较时,它们不相等。
如果您输入代码而不是复制粘贴代码,它就会按预期工作。