Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
OLá, Bom dia.
Preciso de um algoritimo que me retornasse todas posições que a "tal" palavra aparece em todo o texto.
IndexOf() e search() só retorna a primeira "aparição"...rsrsrs..
.match() retorna a palavra encontrada.
Alguma ideia?
Exemplo
var x = "O sapo não lava o pé, não lava por que não quer.";
algo que me retornasse a posição de todos os 'não';
ObrigadoPela lógica é isso mesmo que preciso...obrigado.
só não esta rodando :)
>
Agora, Rafael da Silveira disse:
Pela lógica é isso mesmo que preciso...obrigado.
só não esta rodando :)
Hihi, ai é com você!
Eu fiz pelo fórum mesmo, não testei.
Boa sorte :)
valeu...vou ver aqui
if(palavas[i] == palavra)
posicao.push(i);
Não esta indo por que palavras* traz uma posição "numero" e compara com a palavra procurada "nao"...e não encontrada nada.**
*
*
**
*
*
**
Como saber qual a palavra que esta na posição 3 -> palavra[3]?
*
>
9 minutos atrás, Rafael da Silveira disse:
Como saber qual a palavra que esta na posição 3 -> palavra[3]?
Exato.
E o array 'posicao' vai ser um array de inteiros, com o index de cada palavra 'não' que existe na frase.
Rafael da Silveira
Olá...
Esse código que precisas vai ser preciso para que exactamente ?
itlpp
Não é por nada, mas tens a certeza que esse código que postaste funciona ??
Repara que 'palavas' é uma string, ao pesquisares palavas* não irá retornar nada pois é uma string e não um array...**
*
*
**
*
*
**
Eu vou pensar numa forma de fazer isso aqui, mas não é muito fácil ...
*
*
**
*
*
**
O melhor mesmo é pensar numa maneira mais facil de reslver o problema , dai ser importante referires para que vais utilizar o código
*
*
**
*
*
**
Abraço
*
*
**
*
*
**
Vítor Mendes
*
*
**
*
*
**
*
*
**
*
>
6 minutos atrás, Vitor Mendes disse:
Rafael da Silveira
Olá...
Esse código que precisas vai ser preciso para que exactamente ?
itlpp
Não é por nada, mas tens a certeza que esse código que postaste funciona ??
Repara que 'palavas' é uma string, ao pesquisares palavas* não irá retornar nada pois é uma string e não um array...** *
Eu vou pensar numa forma de fazer isso aqui, mas não é muito fácil ...
O melhor mesmo é pensar numa maneira mais facil de reslver o problema , dai ser importante referires para que vais utilizar o código
Abraço
Vítor Mendes
Funciona sim... Só escrevi errado o nome da variável dentro do if.
>
Citar
Preciso de um algoritimo que me retornasse todas posições que a "tal" palavra aparece em todo o texto.
Foi o que ele pediu.
Pode ver que retorno um array com todas as posições (na verdade é o index, posição mesmo seria 'i+1') que essa palavra se encontra.
>
Citar
Repara que 'palavas' é uma string, ao pesquisares palavas não irá retornar nada pois é uma string e não um array..
palavras recebe o retorno do split...
Veja se é isso o que você precisa:
var frase = 'O sapo não lava o pé, não lava por que não quer';
var needle = 'não';
var contador = frase.split(needle).length - 1;
var index = 1;
while (index <= contador) {
console.log(frase.split(needle, index).join(needle).length);
index++;
}
/**
* Ira imprimir 7, 22, 39
* Ai você coloca num array, objeto ou faz o que quizer :)
*/
Só por diversão, também pensei de outra forma:
var frase = "O sapo não lava o pé, não lava por que não quer";
var needle = 'não';
var regex = new RegExp(needle,"gi"), result, indices = [];
while ( (result = regex.exec(frase)) ) {
indices.push(result.index);
}
console.log(indices);
// Ira imprimir [ 7, 22, 39 ];No texto, eu preciso pegar tudo o que estiver dentro da tag <a></a> e apresentar como uma lista.
Esse texto é dinâmico, sempre vai mudar a posição das tag, tamanho do texto..etc..
A ideia é encontras "<a>" e "</a>" e pegar o que ta dentro.
Com a ultima dica esta quase dando certo.
var code = "texto grande que contem <a>teste</a> entre outras palavras de <a>outroteste</a> que vive aumentando as taga <a>maisumteste</a>";
var needle = '<a>';
var end = '</a>'
var contador = code.split(needle).length - 1;
var index = 1;
while (index <= contador) {
var ini = code.split(needle, index).join(needle).length + 3;
console.log(ini)
var end = code.split(end,index).join(end).length;
console.log(end)
console.log(code.slice(ini,end));
index++;
}
a primeira saiu certinho...
depois bugou.
OBS: ESSE TEXTO VEM VIA AJAXConseguimos...
Tava dando erro porque coloquei a variavel 'end' igual ao que estava sendo procurado...o que gerou um conflito.
Dessa forma funcionou perfeitamente, segue o código se alguem precisar de algo parecido.
Agradeço a ajuda. E como coloca resolvido?
var code = "O texto tem <a>Teste</a> e outras palavras como <a>teste2</a> que muda de tamanho e posição <a>teste03</a>";
var needle = '<script>';
var end = '</script>'
var contador = code.split(needle).length - 1;
var index = 1;
while (index <= contador) {
var ini = code.split(needle, index).join(needle).length + 8;
var fim = code.split(end,index).join(end).length;
var contentTag = code.slice(ini,fim);
index++;
}>
1 hora atrás, Rafael da Silveira disse:
No texto, eu preciso pegar tudo o que estiver dentro da tag <a></a> e apresentar como uma lista.
Entendi, mas nesse caso é um outro problema, diferente do descrito no tópico
>
24 minutos atrás, Rafael da Silveira disse:
Conseguimos...
Se o que você quer, é apenas retornar uma lista do conteúdo entre as tags, tem formas mais corretas para se fazer isso, veja:
var texto = "O texto tem <a>Teste</a> e outras palavras como <a>teste2</a> que muda de tamanho e posição <a>teste03</a>";
var matches = [];
texto.replace(/<a>(.*?)<\/a>/g, function () {
matches.push(arguments[1]);
});
console.log(matches);
// Ira imprimir: [ 'Teste', 'teste2', 'teste03' ]
É... No fim não entendi nada do que ele queria.
Pelo tópico, o código que fiz funciona, mas não era isso que ele queria.
Enfim. Se deu certo, beleza ^^
itlpps...seu código tambem chegaria ao mesmo resultado...
Obrigado pela ajuda.