有没有JavaScript strcmp()?

2022-08-30 04:17:45

任何人都可以为我验证这一点吗?JavaScript 没有 strcmp() 的版本,所以你必须写出这样的东西:

 ( str1 < str2 ) ? 
            -1 : 
             ( str1 > str2 ? 1 : 0 );

答案 1

怎么样

str1.localeCompare(str2)

答案 2

正如你所指出的,Javascript没有它。

快速搜索得出:

function strcmp ( str1, str2 ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Waldo Malqui Silva
    // +      input by: Steve Hilder
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    revised by: gorthaur
    // *     example 1: strcmp( 'waldo', 'owald' );
    // *     returns 1: 1
    // *     example 2: strcmp( 'owald', 'waldo' );
    // *     returns 2: -1

    return ( ( str1 == str2 ) ? 0 : ( ( str1 > str2 ) ? 1 : -1 ) );
}

http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/ 相比

当然,如果需要,您可以添加 localeCompare:

if (typeof(String.prototype.localeCompare) === 'undefined') {
    String.prototype.localeCompare = function(str, locale, options) {
        return ((this == str) ? 0 : ((this > str) ? 1 : -1));
    };
}

随时随地使用,而不必担心本地浏览器是否随附。唯一的问题是,如果您关心这一点,则必须添加对区域设置选项的支持。str1.localeCompare(str2)