0

我想在两个字符串之间实现区分大小写的比较。这是我到目前为止所做的,效果不太好

函数比较(x,y){对于(var i=0;i<数学最小值(x.length,y.length));i++){var xc=x[i];var yc=y[i];如果(xc==yc)继续;var xclow=x.toLowerCase();var yclow=y.到LowerCase();if(xclow==cyclow)返回xc<yc-1 : 1其他的返回xclow<cyclow-1 : 1;}

}

如果我这么做console.log(比较(“Kk”、“Kk”));我得到了预期的-1,但如果我做到了console.log(比较(“Kka”,“kk”));我得了1分,我不知道为什么。

9
  • 压缩?比较?
    – 贝吉
    评论 2016年7月26日14:40
  • 1
    你在做什么小写如果你想这样敏感的?
    – 贝吉
    评论 2016年7月26日14:40
  • 当然是比较,抱歉拼写错误
    – 唱针
    评论 2016年7月26日14:41
  • "返回x.length.localeCompare(y.length);“是死代码。删除它。
    – 贝吉
    评论 2016年7月26日14:41
  • @Bergi你说得对,会的
    – 唱针
    评论 2016年7月26日14:43

3个答案

重置为默认值

为什么不使用“Kk”===“Kk”?

函数比较(x,y){返回x===y;//或返回x===y?1 : -1}
2
  • 1
    你的答案是对的,但不知道是谁否决了你 评论 2016年7月26日14:41
  • OP似乎不想测试相等性,而是编写一个比较函数
    – 贝吉
    评论 2016年7月26日14:44
1

你写了两个错别字x.至下壳体();而不是xc.toLowerCase();y.至下壳体();而不是yc.to小写();

函数比较(x,y){对于(var i=0;i<数学最小值(x.length,y.length));i++){var xc=x[i];var yc=y[i];如果(xc==yc)继续;var xclow=xc.toLowerCase();var cyclow=yc.toLowerCase();如果(xclow==ycow)返回xc<yc-1 : 1其他的返回xclow<cyclow-1 : 1;返回x.length.localeCompare(y.length);}}

顺便说一句,由于if和else都包含return语句,因此最后一个return声明是不必要的。

有更简单的方法可以做到这一点,但我认为你正试图靠自己来实现这一点。

  • 谢谢,但返回值仍然不正确
    – 唱针
    评论 2016年7月26日14:54
  • @唱针:比较(“Kka”、“kk”)产量-1正如现在预期的那样。发生了什么?
    – 贝吉
    评论 2016年7月26日14:56
  • @Bergi,由于某些原因我没有工作,现在工作很好,谢谢
    – 唱针
    评论 2016年7月26日15:01
0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare网站

类似于:

console.log('a'.localeCompare('a',{敏感度:'variant'}));

如果需要,可以添加区域设置等。

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.