Comparing the source string in JavaScript?

In javascript:

"Id".localeCompare("id")

will report that id is greater. I want to do ordinal (not local) to compare "Id" more. This is similar to String.CompareOrdinal in C #. How can i do this?

+3
source share
5 answers

As Raymond noted (and explained) in a comment, “ordinal” matching is not localized as easily as using different equality operators in strings (just make sure both operands are strings):

"a" > "b" // false 
"b" > "a" // true

To get a little fancy (or not guess with [[prototype]], the function is the same):

String.prototype.compare = function (a, b) {
    return ((a == b ? 0)
        ? (a > b : 1)
        : -1)
}

Then:

"a".compare("b") // -1

Happy coding.

+1
source

Raymond Chen pst. JavaScript - Mozilla Developer Network. , JavaScript, .

, MDN String, " " :

C strcmp() . JavaScript :

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.");

localeCompare, String.

"Id" a "id" b, :

"Id is less than id"

, , localeCompare. MDN, localeCompare.

, , (<) ( > ) JavaScript.

# String.CompareOrdinal, , , JavaScript. MSDN # String.CompareOrdinal(String, String) " String Char ." , String (ASCII) .

#, :

int result = String.CompareOrdinal("Id", "id");

result int, , , -32, "I" (0x49) "i" (0x69) -0x20 = -32. , "Id" , "id", , .

+4

: ?

+1
function compareOrdinal(ori,des){
    for(var index=0;index<ori.length&&index<des.length;index++){
        if(des[index].charCodeAt(0)<ori[index].charCodeAt(0)){
            return -1;
            break;
        }
    }
    if(parseInt(index)===des.length-1){
        return 0;
    }
    return 1;
}

compareOrdinal("idd","id");//output 1
0

, :

function findMissingString() {
    var str1 = arguments[0];
    var str2 = arguments[1];
    var i = 0 ;
    var j = 0 ;
    var text = '' ;
    while(i != (str1.length >= str2.length ? str1.length : str2.length )) {
        if(str1.charAt(i) == str2.charAt(j)) {
            i+=1 ;
            j+=1;
        } else {
            var indexing =  (str1.length >= str2.length ? str1.charAt(i) : str2.charAt(j));
            text = text + indexing ;
            i+=1;
            j+=1;
        }
    }
    console.log("From Text = " + text);
}
findMissingString("Hello","Hello world");
Hide result
-1

All Articles