Tá, ficaram umas dúvidas conceituais aí. o método replace não trabalha com expressões regulares. O método replaceAll sim.
Vamos pra uns exemplos.
Quero substituir todos os números da String pela letra “n”:str.replaceAll("\\d", "n");Quero substituir todas as vírgulas por pontos:str.replaceAll(",", ".");Quero remover todos os caracteres que não são ASCII:str.replaceAll("[^\\p{ASCII}]", "")Na esquerda eu coloco a expressão que quero encontrar, e na direita a String literal pela qual irei substituir o que encontrei
D
dugbuddy
Rodrigo Sasaki,
Se eu quiser substituir o ( * ) por qualquer palavra.
Existe isso?
eu tenho essa situação
Part Number = MCA*-??123
onde * pode ser qualquer palavra e ? pode ser 1 unico caracter
Este partNumber poderia ser assim MCA2A3D4F-CC123
Como ficaria o ReplaceAll?
obrigado
R
Rodrigo_Sasaki
Se você quiser substituir qualquer palavra tem que ser algo diferente. Não tem o “qualquer palavra” tem que dizer qual palavra que é.
e o * é um quantificador, não é válido em expressões regulares, o que você quer é algo como .* provavelmente. Mas isso substituiria tudo na sua String.
E
entanglement
Você pode converter uma máscara no formato wildcard (no seu caso, “*” e “?” ) para um Pattern.
De modo geral, “" equivale a ".” e “?” equivale a “.?”.
Mas aí o guloso do .* já a caba com a graça de todo mundo
D
dugbuddy
Rodrigo,
O problema é este, essas mascaras serão criadas pelo cliente e eles usam * ( qualquer sequencia ) e ? para um caracter.
Eu nao estou conseguindo criar uma expressa regular para fazer esse match,
Teria alguma outra possibilidade sem usar o match ou find ?
muito obrigado pela ajuda
R
Rodrigo_Sasaki
dugbuddy:
Rodrigo,
O problema é este, essas mascaras serão criadas pelo cliente e eles usam * ( qualquer sequencia ) e ? para um caracter.
Eu nao estou conseguindo criar uma expressa regular para fazer esse match,
Teria alguma outra possibilidade sem usar o match ou find ?
muito obrigado pela ajuda
Tem que ver melhor o que você quer dizer como sequencia, porque o .* vai ler sua String inteirinha, a única coisa que ele ignora (e nem sempre) são quebras de linha. O ideal seria utilizar a ideia do entanglement mas substituir o * por .*? ou talvez \b.*?\b
D
dugbuddy
Eu sou ruim pra explicar por msg… hahaha
Mas assim.
O User colocar um part number MCA9090-BA123 para carregar uma lista de nomes.
Eu tenho que pegar esse part number e percorrer uma lista de mascaras para popular uma lista.