Javascript - URL 的奇怪字符串比较行为

标签 javascript c# string

最近在写javascript的时候遇到了一个字符串比较的问题,我无法理解。

我从完全相同的 Url 创建了两个字符串,当我比较它们时,它返回 false,但在重新分配相同的字符串后,比较返回 true。

这是我的例子:

var str1 = "http://google.com/";
var str2 = "http://google.com‏/";
var eq = str1 == str2;
alert(eq); //print false


str1 = "http://google.com/";
str2 = "http://google.com/";
eq = str1 == str2;
alert(eq); //print true

Here is the fiddle

我也在 C# 中编写了相同的代码,结果是相同的,为什么会发生这种情况,任何帮助将不胜感激。

最佳答案

com/ 之间的第二个字符串中有一个不可见的字符,您可以使用此 foreach 循环来验证:

foreach(var c in str2)
        Console.WriteLine(c);

打印

h
t
t
p
:
/
/
g
o
o
g
l
e
.
c
o
m
‏
/

这就是它返回 false 的原因。顺便说一句,我只是复制/粘贴你的代码,当我手动编写它时,它不会发生。

关于Javascript - URL 的奇怪字符串比较行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378276/

相关文章:

javascript - 如何从 jquery ui datetimepicker 隐藏秒和毫秒

javascript - try/catch/finally 不是多余的吗?

javascript - 使用 Text 增加文本框大小

c# - 在 switch 语句中显示 Console.ReadLine()

c - 如何在 C 中仅提取此字符串的一部分?

javascript - 响应式或流畅布局的跨浏览器 SVG?

c# - 创建类似 iSeries 的程序

c# - 使用 InnerText 时防止 HTMLAgilityPack 连接单词

regex - 如何从第一个非字母字符开始的字符串中删除所有字符?

java - 返回字符串特定子串首字母的索引