6
votes

JavaScript équivalent à C STRNCMP (comparer la chaîne de longueur)

Y a-t-il un équivalent dans JavaScript sur la fonction C STRNCMP ? STRNCMP prend deux arguments de chaîne et un integer longueur argument. Il comparerait les deux chaînes pour de longueur et déterminerait si elles étaient égales aussi loin que longueur est allé.

JavaScript a-t-il une fonction intégrée équivalente?


0 commentaires

6 Réponses :


1
votes

Vous pouvez toujours Substring Les chaînes d'abord, puis comparez.


0 commentaires

11
votes

Vous pouvez facilement construire cette fonction: xxx

une alternative au ternaire à la fin de la fonction pourrait être le localecompare méthode, par exemple retour str1.localecompare (str2);


2 commentaires

Je l'ai construit un peu différemment, mais merci. Je voulais juste m'assurer que je ne réinventions pas la roue en premier.


En fait, ce n'est pas équivalent (il ne renvoie que 0, -1 ou 1, la fonction C retourne plus de valeurs), mais je pense que c'est suffisant pour la plupart des cas.



2
votes

Ce n'est pas que vous pouvez trouver un ici , avec Beaucoup d'autres fonctions JavaScript utiles .

function strncmp ( str1, str2, lgth ) {
    // Binary safe string comparison  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/strncmp
    // +      original by: Waldo Malqui Silva
    // +         input by: Steve Hilder
    // +      improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +       revised by: gorthaur
    // + reimplemented by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: strncmp('aaa', 'aab', 2);
    // *     returns 1: 0
    // *     example 2: strncmp('aaa', 'aab', 3 );
    // *     returns 2: -1
    var s1 = (str1+'').substr(0, lgth);
    var s2 = (str2+'').substr(0, lgth);

    return ( ( s1 == s2 ) ? 0 : ( ( s1 > s2 ) ? 1 : -1 ) );
}


1 commentaires

SUBSTRING est plus rapide que substr .



1
votes
function strncmp(a, b, length) {
   a = a.substring(0, length);
   b = b.substring(0, length);

   return a == b;
}

0 commentaires

3
votes

Ce n'est pas. Vous pouvez définir un comme suit: xxx


0 commentaires

2
votes

Depuis Ecmascript 2015, il y a startswith () : xxx

Ceci couvre le cas d'utilisation très fréquent où la longueur de la comparaison est la longueur du SearchString , et seule une valeur de retour booléen est requise ( STRCMP () renvoie un entier pour indiquer une commande relative, à la place.)

le La page DOC Mozilla contient également un Polyfill pour string.pototype.startswith () .


0 commentaires