2012-05-22 11 views
6

¿Hay alguna función en javascript que compare una cadena y devuelva un booleano? Encontré .match pero devuelve las cadenas que coinciden. Esperaba que hubiera algo más para tener un código menor al comparar una cadena. Ya que quería comprobar si una cadena tiene esta palabra y proceder en caso contrario.cadena compare en javascript que devuelve un booleano

gracias

+0

estás buscando una cadena1 exacta a STRING2 partido, o es algo cadena1 que puede ocurrir en algún lugar dentro de una ¿string2 más grande? –

+0

esa fue mi primera solución pero encontré un defecto.Correo electrónico == El correo electrónico de amigo devolverá falso. así que estaba buscando una función tipo strcmp para javascript. :) – magicianiam

Respuesta

11

Usted puede utilizar el tipo aumento de, especialmente si tiene que utilizar esta función a menudo:

String.prototype.isMatch = function(s){ 
    return this.match(s)!==null 
} 

Para que pueda usar:

var myBool = "ali".isMatch("Ali"); 

opinión general es que el uso del tipo de aumento se desanimó sólo por el hecho de que puede colisionar con otros aumentos.

Según el libro Javascript Patterns, su uso debe ser limitado.

yo personalmente creo que está bien, siempre y cuando se utiliza una buena denominación, tales como:

String.prototype.mycompany_isMatch = function(s){ 
    return this.match(s)!==null 
} 

Esto hará que sea fea pero segura.

+0

¡Genial! (¿Un poco exagerado quizás?: D) – ArtoAle

+0

No he visto esas cosas antes. ¿Qué es ismatch? déjame probar esto gracias – magicianiam

+0

@magicianIam, funcionará si lo agrega al prototipo de cadena, como lo he esbozado. 'isMatch' es nuestra adición al framework de JavaScript, no a una función intrínseca – Aliostad

5

hay .indexOf() que devolverá la posición de la cadena encontrada, o -1 si no se encuentra

+0

Siempre pensé que era solo para array. – magicianiam

+0

¡no, también funciona con cuerdas! Pero no estoy muy claro si está buscando una subcadena dentro de una cadena, o una comparación de cadena exacta (¿insensato en el caso?) –

+0

distingue entre mayúsculas y minúsculas, pero planeo usar tolowercase para aliviar mis problemas. déjame probar este. Gracias. Me pregunto por qué Google no me mostró esto. – magicianiam

0

Usted sólo puede usar un comparar.

if ("dog" == "cat") { 
    DoSomethingIfItIsTrue(); 
} else { 
    DoSomethingIfItIsFalse(); 
} 
+0

Estrictamente hablando, si toma este enfoque, quiere usar '===', no '=='. Sospecho que la mayoría de los codificadores de Javascript usarían esto en lugar de aumentar el prototipo de cadena, por lo que vale la pena, al menos, hacer que las personas usen '===' para verificar la igualdad. –

0

Sé que esta no es la respuesta exacta que está buscando, pero esta es siempre una manera efectiva de hacerlo.

if(var1 == var2){ 
    //do this 
}else{ 
    //do that 
}; 
+0

según una gran cantidad de artículos (y mi opinión personal también) la prueba '===' es mucho más confiable (y tiene propiedad de transitividad) que '==' (que no es transitiva). Además, si necesita un booleano, puede usar '(var1 === var2? True: false)' – ArtoAle

+0

Sí, entiendo que quiere devolver un booleano, pero ¿qué va a hacer con él después ?, mi suposición sería que hacer algo si es verdad y otra cosa si es falso. Pero sí, estás en lo correcto con el ===. –

1
myString.indexOf(myWord) > -1 

o, si se desea una función:

function hasWord(myString, myWord) { 
    return myString.indexOf(myWord) > -1; 
} 
9

Se puede utilizar el método de test() RegEx que devuelve un valor lógico:

/a/.test('abcd'); // returns true. 
+1

Esta es la respuesta correcta. "El método' test() 'ejecuta una búsqueda de una coincidencia entre una expresión regular y una cadena especificada. Devuelve' true' o 'false'." - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test –

0

En realidad, .match() puede hacer el truco para usted, ya que devuelve una matriz de cadenas de coincidencia de patrones en su caso, de lo contrario nula.

De todos modos, si solo quiere comprobar si una cadena contiene otra cadena, es más probable que use indexOf() (devolverá -1 si no se encuentra ninguna subcadena).

La primera solución es un poco exagerada para su propósito.

Si en el otro extremo desea comprobar la igualdad se puede usar `cadena1 === string2``

Cuestiones relacionadas