javascript比较字符串案例敏感

时间:2016-07-26 14:36:28

标签: javascript string compare

我想在2个字符串之间实现区分大小写的比较。 这是我到目前为止所做的,它运作得不好

function compare(x,y){
  for (var i = 0; i < Math.min(x.length, y.length); i++){
  var xc = x[i];
  var yc = y[i];
  if (xc == yc) 
     continue;
  var xclow = x.toLowerCase();
  var yclow = y.toLowerCase();
    if (xclow == yclow)
        return xc < yc ? -1 : 1
    else
        return xclow  < yclow ? -1 : 1;

}

}

如果我正在做console.log(compare("Kk","kk"));我按预期得到-1,但是如果我正在做console.log(compare("Kka","kk"));我得到1并且我不知道为什么。

3 个答案:

答案 0 :(得分:3)

为什么不只使用"Kk" === "kk"

function compare(x, y) {
    return x === y;
    // or return x === y ? 1 : -1
}

答案 1 :(得分:1)

有两个拼写错误,您写的是x.toLowerCase();而不是xc.toLowerCase();y.toLowerCase();而不是yc.toLowerCase();

function compare(x, y) {
    for (var i = 0; i < Math.min(x.length, y.length); i++) {
        var xc = x[i];
        var yc = y[i];
        if (xc == yc)
            continue;
        var xclow = xc.toLowerCase();
        var yclow = yc.toLowerCase();
        if (xclow == yclow)
            return xc < yc ? -1 : 1
        else
            return xclow < yclow ? -1 : 1;
        return x.length.localeCompare(y.length);
    }
}

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

  

有更简单的方法可以做到这一点,但我认为你正在努力实现这一目标。

答案 2 :(得分:0)

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

类似的东西:

 console.log('a'.localeCompare('A', { sensitivity: 'variant' }));

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