En este sencillo tutorial vamos a ver cómo puedes encontrar o buscar un carácter en una cadena usando JavaScript. Para ello podemos usar los métodos includes
, search
, indexOf
y lastIndexOf
.
Contenidos
Usando el método includes
Todos los arrays y las cadenas de JavaScript incluyen el método includes
de forma nativa, que acepta uno o más caracteres como parámetros. El método devolverá true
si la cadena contiene el carácter especificado, o false
en caso contrario:
'Esto es una cadena'.includes('a'); // true
'Esto es una cadena'.includes('i'); // false
Sin embargo, el método includes
no nos proporcionará información acerca del la posición en la que se ha encontrado el carácter.
El método includes
es sensible a las mayúsculas, por lo que, por ejemplo, el carácter A
no será el mismo que el carácter a
.
Usando el método indexOf
Si también necesitas encontrar la posición en la que se encuentra el carácter, tendrás que usar el método indexOf
, que devolverá la posición en la que se ha encontrado el carácter dentro de la cadena, o -1
en caso de que no esté presente:
'Esto es una cadena'.indexOf('E'); // 0
'Esto es una cadena'.indexOf('o'); // 3
'Esto es una cadena'.indexOf('z'); // -1
El método indexOf
también es sensible a las mayúsculas, por lo que el carácter E
no es el mismo que el carácter e
.
En caso de existir varias ocurrencias, el método indexOf
devolverá solamente la primera de ellas:
'Esto es una cadena'.indexOf('e'); // 5
Usando el método lastIndexOf
Si en lugar de encontrar la posición de la primera ocurrencia de un carácter quieres encontrar la última, debes usar el método lastIndexOf
. Del mismo modo que el método indexOf
, en caso de que el carácter no se encuentre en la cadena, el método devolverá el valor -1
:
'Esto es una cadena'.lastIndexOf('E'); // 0
'Esto es una cadena'.lastIndexOf('a'); // 17
'Esto es una cadena'.lastIndexOf('z'); // -1
El método lastIndexOf
también es sensible a las mayúsculas. Al igual que el método indexOf
, en caso de existir varias ocurrencias, el método lastIndexOf
devolverá solamente la última de ellas.
Usando el método search
El método search
de JavaScript permite buscar una cadena en el interior de una cadena. Si la subcadena se encuentra, el método search
devolverá la posición del primer carácter de la subcadena en el interior de la cadena. Si la subcadena no se encuentra, devolverá -1
.
Si bien este método es preferible cuando se buscan cadenas de texto, también podemos usarlo para buscar caracteres independientes:
'Esto es una cadena'.search('E'); // 0
'Esto es una cadena'.search('o'); // 4
'Esto es una cadena'.search('z'); // -1
Al igual que el método indexOf
, en caso de existir varias ocurrencias, el método search
devolverá solamente la primera de ellas:
'Esto es una cadena'.search('e'); // 5
Esto ha sido todo.
Muchas gracias por el aporte
gracias les pido ayuda
l
debo escribir el código necesario en la función findWord() para que retorne si la palabra existe en la frase.
Descripción de la función
Parámetros de la función:
string phrase: frase en la cuál buscaras la palabra
string word: palabra que deberas buscar en la frase
La frase = «voy a aprender a programar» contiene la palabra programar
La frase «Estoy aprendiendo mucho» no contiene la palabra «programar».
si la palabra si esta en la cadena retornar true
si la palabra no esta en la cadena retornar false
Lograste resolverlo? xd ese ejercicio es de academlo verdad? asjasjasd yo tambien estoy con los mismos ejercicios ya pude con la mayoria
‘Ballena azul’.includes(‘ballena’); // devuelve false
Me parece que eso soluciona el tema que están buscando
Hola muchas gracias por la ilustración, pero me surge una pregunta, y si la palabra contiene más de una vez la letra, por ejemplo css contiene 2 s ¿Cómo puedo obtener la posición en la palabra de cada vez que la letra aparece?
uff encontraste la respuesta ?
Se me ocurre q podrías usar un bucle for y en cada iteracion ir preguntando si contiene la sub cadena.
function contarCaracter(string, character) {
let result = [];
if(typeof string !== ‘string’ && typeof character !== ‘string’){
throw Error(«You must be insert a string in the arguments»);
};
for (let i = 0; i < string.length; i++) {
if(string[i].includes(character)){
result.push(i);
}
continue;
};
return result;
};
La probé un funciona! y si además quieren que no distinga entre Mayusculas y minusculas, solo hay q agregarle .toLowerCase() o .toUpperCase() al for, quedando asi:
for (let i = 0; i < string.length; i++) {
if(string[i].toLowerCase().includes(character.toLowerCase())){
result.push(i);
}
Espero les sirva!
GRACIAS EDU POR ESTA GUIA! me sirvió mucho!