"pegar" as strings que estão entre colchetes - duvida

4 respostas
lumedeiros

Oi gente...

Estou com a seguinte dúvida:

Eu preciso pegar as strings dentro dos colchetes:

por exemplo: Show [specialties] of a [health unit]

preciso pegar specialties e health unit...

Eu fiz o seguinte método:

public static String quebraString(String s) {
		
		int indice_abre= s.indexOf('[');
		int indice_fecha= s.lastIndexOf(']');
		String conteudo= s.substring(indice_abre + 1, indice_fecha);		
		return conteudo;
	}

Sendo que esse método está pegando somente a primeira ocorrencia entre colchetes, por exemplo: Select [unit], ele péga o unit.

Alguém poderia me ajudar??... a ajeitar esse método para ele pegar todas as strings entre colchetes e não só a primeira o ocorrência?

abs...e obrigado!!!!!!!!!

4 Respostas

acopiara

Cara fiz usando regex:

public static void main(String...strings){ String data = "[ffff] [gggg]"; String regex = "([\w])+"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(data); while (m.find()) { System.out.println(m.group()); } }

Valews

antoniopopete

Voce pode usar expressao regular como citado pelo nosso colega, ou pode usar um laco,com a seguinte instruçao:

int i = 0;
while(i < s.length()){


}

Eu particulamente,acho a expressção regular mais elegante…

lumedeiros

Oi Gente,

Não conhecia a utilização com expressões regulares. Mas pelo que vi, serviu para esse me ucaso, e vai servir para outros da minha aplicação :lol: .

Obrigado pela ajuda de vcs :!: :!: :!: :!:

bjuss :!: :!: :!: :!: :!: :!:

acopiara

lumedeiros,

Melhorei a regex. Desse jeito vai ficar mais preciso:

public static void main(String...strings){ String data = "[ffff] ddd dsds [dfdf] [gggg]"; String regex = "(\[(\w+)\])+"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(data); while (m.find()) { System.out.println(m.group(2)); } }

Regex é muito importante.

Alysson Bandeira

Criado 31 de janeiro de 2007
Ultima resposta 31 de jan. de 2007
Respostas 4
Participantes 3