JavaScript Détecter une chaîne


Exemple

Pour détecter si un paramètre est une chaîne primitive , utilisez typeof :

var aString = "my string";
var anInt = 5;
var anObj = {};
typeof aString === "string";   // true
typeof anInt === "string";     // false
typeof anObj === "string";     // false

Si vous avez déjà un objet String , via new String("somestr") , ce qui précède ne fonctionnera pas. Dans ce cas, nous pouvons utiliser instanceof :

var aStringObj = new String("my string");
aStringObj instanceof String;    // true

Pour couvrir les deux instances, nous pouvons écrire une fonction d'assistance simple:

var isString = function(value) {
    return typeof value === "string" || value instanceof String;
};

var aString = "Primitive String";
var aStringObj = new String("String Object");
isString(aString); // true
isString(aStringObj); // true
isString({}); // false
isString(5); // false

Ou nous pouvons utiliser la fonction toString d' Object . Cela peut être utile si nous devons également rechercher d'autres types dans une instruction switch, car cette méthode prend également en charge d'autres types de données, tout comme typeof .

var pString = "Primitive String";
var oString = new String("Object Form of String");
Object.prototype.toString.call(pString);//"[object String]"
Object.prototype.toString.call(oString);//"[object String]"    

Une solution plus robuste consiste à ne pas détecter de chaîne du tout, plutôt que de vérifier les fonctionnalités requises. Par exemple:

var aString = "Primitive String";
// Generic check for a substring method
if(aString.substring) {

}
// Explicit check for the String substring prototype method
if(aString.substring === String.prototype.substring) {
    aString.substring(0, );
}