Olá pessoal, bom dia.
Pessoal, minha dúvida é a seguinte:
Tenho uma String e gostaria que em certo ponto dela substituir uma subsequência por um valor qualquer.
Para tal, estou usando a classe StringBuilder.
Imaginem que eu tenha a seguinte String abaixo.
StringBuilder builder = new StringBuilder("SELECT ?Disease_name ?Drug_name\n" +
" WHERE{\n" +
" SERVICE <http://localhost:3030/diseasome/sparql> {\n" +
" ?ds diseasome:name ?Disease_name.\n" +
" FILTER(?Disease_name = ?:name)\n" +
" }\n" +
" SERVICE <http://localhost:3030/dailymed/sparql>{\n" +
" ?dm dailymed:fullName ?Drug_name.\n" +
" } \n" +
" } limit 10");
Como vocês podem ver tenho uma subsequência constituida dos seguintes caracteres ?:name.
O que eu gostaria era de substituir essa subsequencia (?:name) por um valor qualquer que eu fosse passar por parâmetro.
Com o seguinte trecho do código abaixo, consigo pegar o inicio da subsequencia.
for (int i = 0; i < builder.length(); i++) {
if (Character.toString(builder.toString().charAt(i)).startsWith("?") && Character.toString(builder.toString().charAt(i+1)).startsWith(":")){
//System.out.println(builder.toString().charAt(i) + "" + builder.toString().charAt(i+1));
System.out.println(builder.substring(i));
}
}
No entanto, obtrer apenas o inicio da subsequencia não é o suficiente.
Uma que vez se eu mandar substituir a subsequencia do código acima, vai ser substituido tudo que fica após a subsequencia ?:name também.
Gostaria de saber se alguém pode me dar um dica se como que eu faço para substituir apenas a subsequencia ?:name e deixar todo o restante como estar.
Obs.: a subsequencia ?:name pode ser qualquer outro valor, como por exemplo ?:doenca, o que eu quero substituir é o que inicia com os caracteres ?:
Desde já obrigado pela atenção de todos.
Abraço.



