Pegar string entre 2 caracteres

Olá pessoal,
gostaria que me ajudassem no seguinte:

eu quero pegar a string que está entre 2 caracteres, exemplo:

String nome = %valorNuncaFixo%

onde a variável nome deve receber a string “valorNuncaFixo”, eu até pensei em usar substring, mas como o valor entre os sinais de % nunca serão fixos, eu não teria o valor final da substring para passar como argumento no endIndex.
Agradeço a ajuda.

Você pode pegar os índices de ‘%’ assim:

String s = "%dsgdsfdsfdsfs%";
int begin = s.indexOf("%");
int end = s.lastIndexOf("%");

String filtrada = s.substring(begin, end);
        String nome = "%valorNuncaFixo%";
        String[] valorNuncaFixo = nome.split("%");
        System.out.println(valorNuncaFixo[1]);

essa é a mais rápida…

[quote=marcobiscaro2112]Você pode pegar os índices de ‘%’ assim:

[code]
String s = “%dsgdsfdsfdsfs%”;
int begin = s.indexOf("%");
int end = s.lastIndexOf("%");

String filtrada = s.substring(begin, end);
[/code][/quote]

klegal tbm

só faltou

String filtrada = nome.substring(begin+1, end);

[quote=Focão][quote=marcobiscaro2112]Você pode pegar os índices de ‘%’ assim:

[code]
String s = “%dsgdsfdsfdsfs%”;
int begin = s.indexOf("%");
int end = s.lastIndexOf("%");

String filtrada = s.substring(begin, end);
[/code][/quote]

klegal tbm

só faltou

String filtrada = nome.substring(begin+1, end);

[/quote]

Verdade! Foi falta de atenção… :oops:

Se fizesse daquele jeito acima, o primeiro ‘%’ também seria incluído… e me parece que deve-se usar:

String filtrada = nome.substring(begin+1, end-1);

Ou estou enganado?

Obrigado pela correção!

marcobiscaro2112…

se usar String filtrada = nome.substring(begin+1, end-1);

vai ficar sem o "o" valorNuncaFix

a subtring diz

String java.lang.String.substring(int start, int end)
Copies a range of characters into a new String.

Parameters:
start the offset of the first character
end the offset one past the last character
Returns:
a new String containing the characters from start to end - 1
Throws:
IndexOutOfBoundsException when start < 0, start > end or end > length()

Verdade. Logo o correto é:

String s = "%dsgdsfdsfdsfs%";
int begin = s.indexOf("%");
int end = s.lastIndexOf("%");

String filtrada = s.substring(begin + 1, end);

Obrigado novamente pela correção. :slight_smile:

[quote=Winthorp]Olá pessoal,
gostaria que me ajudassem no seguinte:

eu quero pegar a string que está entre 2 caracteres, exemplo:

String nome = %valorNuncaFixo%

onde a variável nome deve receber a string “valorNuncaFixo”, eu até pensei em usar substring, mas como o valor entre os sinais de % nunca serão fixos, eu não teria o valor final da substring para passar como argumento no endIndex.
Agradeço a ajuda. [/quote]

Por acaso a String pode vim assim ?

String nome = “%valorNu%ncaFixo%”;

com seu caracter de controle de range no meio ?