Ref.: Redex

10 respostas
P

Bom dia!

Como faço para procurar por exemplo, uma "/" em uma string com com duas ocorrências?

          Fiz assim mas, não esta encontrando.
Pattern ptnrPosicaoInicial = Pattern.compile("/{2}");
				Pattern ptnrPosicaoFinal = Pattern.compile("\n\r");
				Matcher mtchPosicaoInicial = ptnrPosicaoInicial.matcher(sbBuffer1);
				Matcher mtchPosicaoFinal = ptnrPosicaoFinal.matcher(sbBuffer1);
				
				if (mtchPosicaoInicial.find()) {
					iPosicaoInicial = mtchPosicaoInicial.start() - 2;
					System.out.printf("Encontrado: \"%s\" de %d à %d.%n", mtchPosicaoInicial.group(), mtchPosicaoInicial.start(), mtchPosicaoInicial.end());
					
					if (mtchPosicaoFinal.find()) {
						iPosicaoFinal = mtchPosicaoFinal.start() - 1;
						System.out.printf("Encontrado: \"%s\" de %d à %d.%n", mtchPosicaoFinal.group(), mtchPosicaoFinal.start(), mtchPosicaoFinal.end());
					}
				}

10 Respostas

P

A string é esse:

03/01/05 07:18AM 1 E1148  T10103 <I>9000             0'10 00:00'25              <LF><CR>
GustavoLaguna

Faz o teste, não tenho certeza.

Pattern p = Pattern.compile("/");
Matcher m = p.matcher(sbBuffer1);
while(m.find) {
	System.out.println("Pos Inicial: " + m.start() + "String: " + m.group());
}
jopss

Se fosse uma String normal, vc faz:

String[] s = string.split("/")

que corta a string com a ocorrencia passada, retornando um array com os intervalos… no teu caso irá retornar 3 strings, sem a “/”

ou pega o indice e faz substring:

int idx = string.indexOf("/");
String s = string.substring(0,idx);

neste caso te retorna a primeira barra. Teria que refazer no resultado para pegar a segunda.
No teu caso nao sei nao…

jopss :stuck_out_tongue:

GustavoLaguna

Hum… agora dei uma olhada melhor. Voce está querendo pegar a string entre as barras, e não só a posição da barra utilizando regex.

Voce pode utilizar o que é o jopss disse, ou dar uma olhada na classe Scanner que tem vários métodos para isso.

abraço

P

Gustavo,

Estou querendo relamente pegar as posições correspondentes à "/".
GustavoLaguna

Então acho que qualquer uma das formas, tanto a minha como a do jopss deve funcionar, já fez o teste?

P

Blz!

Isso funciona, porém preciso pegar todas as ocorrências de “/”

Tentei

Pattern ptnrPosicaoInicial = Pattern.compile("/{2}");

Mas não está funcionando.

Irei te mandar um link

P

Dê uma olhada no final deste documento por favor.

GustavoLaguna

Usa um while e pega um por um

P

uh, uh!

Isso não irei fazer mesmo, antes usava IO passaei a usar o NIo que disseram ser melhor, acatei!

Dizeram para usar Expressôes Regulares para encontrar o que desejar em uma string, acatei tb!

Sei que as mudanças são ótimas, sei tb. que resolve bem os problemas por serem “Completas”,
partindo disso sei que pode ser feito usando esssa expressão {n}, só preciso saber como.

Continuarei vasculhando até encontrar, pq. sei que uma vez construindo esse minha classe, nunca mais precisarei fazer isso denovo.

Valeu!

Criado 2 de maio de 2008
Ultima resposta 2 de mai. de 2008
Respostas 10
Participantes 3