在javascript中:
"Id".localeCompare("id")
Run Code Online (Sandbox Code Playgroud)
会报告"id"更大.我想做序数(不是语言环境)比较,以便"Id"更大.这类似于C#中的String.CompareOrdinal.我该怎么做?
我支持Raymond Chen和pst给出的答案.我将使用我最喜欢的网站上的文档来支持它们,以获得JavaScript问题的答案 - Mozilla开发者网络.顺便说一句,我强烈推荐这个网站,以便您将来可能遇到任何JavaScript问题.
现在,如果你转到名为String的MDN部分,在"比较字符串"部分下,你会发现这个描述:
C开发人员使用strcmp()函数来比较字符串.在JavaScript中,您只需使用less-than和greater-than运算符:
var a = "a";
var b = "b";
if (a < b) // true
print(a + " is less than " + b);
else if (a > b)
print(a + " is greater than " + b);
else
print(a + " and " + b + " are equal.");
Run Code Online (Sandbox Code Playgroud)
使用String实例继承的localeCompare方法可以实现类似的结果.
如果我们使用字符串"Id" a和"id",b那么我们将获得以下结果:
"Id is less than id"
Run Code Online (Sandbox Code Playgroud)
这与Yaron在使用该localeCompare方法时得到的结果相同.如MDN中所述,使用小于和大于运算符会产生与使用相似的结果localeCompare.
因此,Yaron问题的答案是使用小于(<)和大于(>)运算符来对JavaScript中的字符串进行序数比较.
由于Yaron提到了C#方法String.CompareOrdinal,我想指出这种方法产生与上述JavaScript完全相同的结果.根据MSDN C#文档,String.CompareOrdinal(String, String)方法"通过评估每个字符串中相应Char对象的数值来比较两个指定的String对象." 因此,使用单个字符的数字(ASCII)值比较两个String参数.
如果我们在C#中使用Yaron Naveh的原始示例,我们有:
int result = String.CompareOrdinal("Id", "id");
Run Code Online (Sandbox Code Playgroud)
的值result是一个int小于零,并且可能是-32因为"I"(×49)和"i"(0×69)之间的差-0x20 = -32.所以,词汇上"Id"小于"id",这与我们之前得到的结果相同.
| 归档时间: |
|
| 查看次数: |
2985 次 |
| 最近记录: |