2009-04-28 29 views
35

En la mayoría de los lenguajes como C#, por ejemplo, si se le da una cadena, puede probar (boolean) si esa cadena contiene otra cadena, básicamente un subconjunto de esa cadena.jQuery String contiene manipulación?

string x = test2; 


if(x.contains("test")) 
    // do something 

¿Cómo puedo hacer esto de una manera sencilla con Javascript/Jquery?

+0

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

Respuesta

64

Esto se hace con indexOf, sin embargo, devuelve -1 en lugar de False si no se encuentra.

Sintaxis
string.indexOf(searchValue[, fromIndex])

Parámetros
searchValue - Una cadena que representa el valor a buscar.
fromIndex - La ubicación dentro de string para comenzar la búsqueda. Puede ser cualquier número entero entre 0 y la longitud de string. El valor predeterminado es 0.

Return
El primer índice en string a la que el inicio de la subcadena se puede encontrar, o -1 si string no contiene ningún caso de la subcadena.

+0

Enlace muerto ....... – Kimtho6

+2

Parece bueno ahora. – Igor

+0

Veo 'indexOf' distingue entre mayúsculas y minúsculas. Para hacer una comparación insensible al caso, uso 'if (t.toUpperCase(). IndexOf (s.toUpperCase())> = 0) {/ * found * /}' – marioosh

22

Como dijo Paolo y Cletus, puedes hacerlo usando indexOf().

Válido para mencionar es que es una función de JavaScript, no una de jQuery.

Si desea una función jQuery para hacer esto se puede usar:

jQuery.fn.contains = function(txt) { return jQuery(this).indexOf(txt) >= 0; } 
+6

Tiene un error en esta implementación: si la cadena buscada comienza con txt, devolverá falso. Use> = en lugar de>. –

+1

Corregido el comentario de Jacob – eKek0

+0

'jQuery (this)' devuelve un objeto jQuery, no una cadena. 'indexOf' no existe dentro de ese objeto jQuery. 'this' tampoco será una cadena, por lo que necesitarás saber qué parte de' esto' quieres comprobar para 'txt'. Tal vez 'return this.src.indexOf (txt)> = 0;'? – Rudie

4

Un simple contiene también puede ser útil, por ejemplo:

<div class="test">Handyman</div> 


$(".test:contains('Handyman')").html("A Bussy man"); 
3

Un ejemplo de trabajo, utilizando sólo indexOf y jQuery

// Add span tag, if not set 
$(document).ready(function(c) { 
    $('div#content ul.tabs li a').each(function(c){ 
    // Add span wrapper if not there already 
    if($(this).html().indexOf('span') == -1){ 
     $(this).html('<span class="tab">' + $(this).html() + '</span>'); 
    } 
    }); 
}); 

DT

+4

¿Eres Dave Thomas de Wendy's? Si es así, comí allí para el almuerzo. Buena hamburguesa – goat

0

intentar implementar esta

function function1() { 
    var m = document.all.myDiv.contains(myB); 
    if (m == true){ 
     m = "YES" 
    } else { 
     m = "NO" 
    } 
    alert(m) 
}