una ultimo palabra eliminar cortar caracteres caracter cadena buscar javascript string variable-types

ultimo - split javascript



¿Cómo puedo verificar si una var es una cadena en JavaScript? (6)

¿Cómo puedo verificar si una var es una cadena en JavaScript?

Lo he intentado y no funciona ...

var a_string = "Hello, I''m a string."; if (a_string typeof ''string'') { // this is a string }


Ahora los días creo que es preferible usar una forma de función de typeof () entonces ...

if(filename === undefined || typeof(filename) !== "string" || filename === "") { console.log("no filename aborted."); return; }


El operador typeof no es un infijo (entonces el LHS de tu ejemplo no tiene sentido).

Debes usarlo así ...

if (typeof a_string == ''string'') { // This is a string. }

Recuerde, typeof es un operador, no una función. A pesar de esto, verá que typeof(var) se usa mucho en la naturaleza. Esto tiene tanto sentido como var a = 4 + (1) .

Además, también puede usar == (operador de comparación de igualdad) ya que ambos operandos son typeof (el tipo siempre devuelve una String ), JavaScript está definido para realizar los mismos pasos si hubiera usado === (operador de comparación estricto).

Como lo menciona Box9 , esto no detectará un objeto String instanciado.

Puedes detectar eso con ...

var isString = str instanceof String;

jsFiddle .

...o...

var isString = str.constructor == String;

jsFiddle .

Pero esto no funcionará en un entorno de múltiples window (piense en iframe s).

Puedes evitar esto con ...

var isString = Object.prototype.toString.call(str) == ''[object String]'';

jsFiddle .

Pero, de nuevo, (como lo menciona Box9 ), es mejor que simplemente uses el formato literal String , por ejemplo var str = ''I am a string''; .

Lectura adicional .


Estabas cerca:

if (typeof a_string === ''string'') { // this is a string }

En una nota relacionada: la verificación anterior no funcionará si se crea una cadena con una new String(''hello'') ya que el tipo será Object lugar. Existen soluciones complicadas para evitar esto, pero es mejor evitar crear cadenas de esa manera, siempre.


La combinación de las respuestas anteriores proporciona estas soluciones:

if (typeof str == ''string'' || str instanceof String)

o

Object.prototype.toString.call(str) == ''[object String]''


Mi enfoque personal, que parece funcionar para todos los casos, es probar la presencia de miembros que solo estarán presentes para las cadenas.

function isString(x) { return (typeof x == ''string'' || typeof x == ''object'' && x.toUpperCase && x.substr && x.charAt && x.trim && x.replace ? true : false); }

Ver: http://jsfiddle.net/x75uy0o6/

Me gustaría saber si este método tiene fallas, pero me ha servido bien durante años.


comprobar nulo o indefinido en todos los casos a_string

if (a_string && typeof a_string === ''string'') { // this is a string and it is not null or undefined. }