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:
[code]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;
}[/code]
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!!!
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
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…
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 :!: :!: :!: :!: :!: :!:
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