[RESOLVIDO] Utilizando replaceAll() para alterar palavras inteiras!

6 respostas
C

Pessoal seguinte, tenho uma String com um texto “VERSION_ID, VERSION_ID_TESTE” incluindo as vírgulas.
Exatamente isso : String teste = “VERSION_ID, VERSION_ID_TESTE”

Quero usar o método replace para retirar SOMENTE o VERSION_ID.
Quando faço isso teste.replace(“VERSION_ID”,“null”) a String fica assim: “null,null_TESTE” mas gostaria que ficasse “null,VERSION_ID_TESTE”, ou seja quero remover apenas palavras inteiras !
Alguém sabe se existe algum regex que eu possa usar pra alterar apenas palavras inteiras ???

6 Respostas

nel

CristianoGDT:
Pessoal seguinte, tenho uma String com um texto “VERSION_ID, VERSION_ID_TESTE” incluindo as vírgulas.
Exatamente isso : String teste = “VERSION_ID, VERSION_ID_TESTE”

Quero usar o método replace para retirar SOMENTE o VERSION_ID.
Quando faço isso teste.replace(“VERSION_ID”,“null”) a String fica assim: “null,null_TESTE” mas gostaria que ficasse “null,VERSION_ID_TESTE”, ou seja quero remover apenas palavras inteiras !
Alguém sabe se existe algum regex que eu possa usar pra alterar apenas palavras inteiras ???

Calma, muita calma. Palavras inteiras ? Tu quer que seja substituído exatamente a mesma palavra, somente a primeira ocorrência ? Como seria ?
Abraços.

leocantanhede

Se for só a 1ª fica assim:

public class TesteReplace {

	public static void main(String [] args) {
		
		String teste = "VERSION_ID, VERSION_ID_TESTE";
		
		teste = teste.replaceFirst("VERSION_ID", "null");	
		System.out.println(teste);
		
	}
	
}
C

Consegui resolver com expressão regular:

String teste = "ID, ALIAS, FTYPE, NAME, OBJ_REF_ID, OWNER, STATUS, CR_EQUIPMENT_ID, CR_LOGICAL_COUNT_ID, STATUS_PROJ, VERSION_ID, VERSION_ID_TESTE";
teste.replaceAll("\\bVERSION_ID\\b", "null");

o trecho de código acima agora me retorna:

“ID, ALIAS, FTYPE, NAME, OBJ_REF_ID, OWNER, STATUS, CR_EQUIPMENT_ID, CR_LOGICAL_COUNT_ID, STATUS_PROJ, null, VERSION_ID_TESTE”

que está correto, não substituiu o VERSION_ID_TESTE

C

No meu caso nao é só a primeira ocorrência, queria TODAS ocorrencias. Usando \b (board) funciona ele buscou todas as ocorrencias de palavras inteiras a as substituiu, as que tinham algo antes ou depois nao foram substituidas.

CyberX

Hi there ou você poderia fazer:

String teste = "ID, ALIAS, FTYPE, NAME, OBJ_REF_ID, OWNER, STATUS, CR_EQUIPMENT_ID, CR_LOGICAL_COUNT_ID, STATUS_PROJ, VERSION_ID, VERSION_ID_TESTE";
		teste = teste.replaceAll("VERSION_ID,", "null,");
		System.out.println(teste);
C

se fosse fazer assim eu teria que fazer pior:

teste = teste.replaceAll(", VERSION_ID,",", null,");

Não ia gostar de ver isso, muito “poluído”. Sem falar que VERSION_ID poderia ser a primeira palavra da String ou a ultima…

Criado 13 de abril de 2012
Ultima resposta 13 de abr. de 2012
Respostas 6
Participantes 4