2011-05-19 18 views
9

Quiero verificar si la cadena b está completamente contenida en la cadena a.
me trataron:JavaScript - Marque una cadena que DEBE contener otra cadena

var a = "helloworld"; 
var b = "wold"; 
if(a.indexOf(b)) { 
    document.write('yes'); 
} else { 
    document.write('no'); 
} 

La salida es sí, no es mi salida era de esperar, porque la cadena B (Wold) no está completamente presente en cadena un (holamundo) --- V.S. Wold mundo

¿Alguna sugerencia para verificar la cadena?

+0

relacionada: [Método como String.contains() en JavaScript] (http://stackoverflow.com/questions/1789945/method-like-string-contains-in-javascript) – Bergi

Respuesta

6

Leer la documentación: MDC String.indexOf :)

indexOf devuelve el índice se encontró el partido. Esto puede ser 0 (que significa "encontrado al principio de la cadena") y 0 es falsy value.

indexOf devolverá -1 si no se encontró la aguja (y -1 es truthy value). Por lo tanto, la lógica de la prueba debe ajustarse para funcionar utilizando estos códigos de retorno. Cadena encontrada (al principio o en otro lugar): index >= 0 o index > -1 o index != -1; Cadena no encontrada: index < 0 o index == -1.

Happy coding.

1

En su lugar, necesita usar if(a.indexOf(b) > -1). indexOf devuelve -1 cuando no puede encontrar una cadena.

1

.indexOf vuelve -1 si se encuentra ninguna coincidencia, que es un valor Truthy . Usted tendrá que comprobar de manera más explícita:

if (a.indexOf(b) != -1) 
0

Eso es porque indexOf devuelve -1 si un valor no se encuentra:

if(a.indexOf(b) != -1) { 
0

es posible que desee utilizar este

if(a.indexOf(b) != -1) 
1

Debe probar si el resultado es -1. -1 indica que no hay coincidencia, pero se evalúa como verdadera en un sentido booleano.

var a = "helloworld"; 
var b = "wold"; 
if(a.indexOf(b) > -1) { 
    document.write('yes'); 
} else { 
    document.write('no'); 
} 
Cuestiones relacionadas