1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Java Replace

Discussão em 'Programação' iniciada por etch, 23 de Março de 2008. (Respostas: 23; Visualizações: 5677)

  1. Não queria abrir um post mas lá teve que ser.

    Queria saber se é possivel substituir . - _ numa string

    Ex:

    input --> Ola_esta.tudo-_.bem
    output --> Ola esta tudo bem
     
  2. AliFromCairo

    AliFromCairo Power Member

    Sim. Podes usar o método replace da classe String. Dá uma vista de olhos na documentação (javadoc) desta classe, pois tens lá outros métodos que te podem interessar, como por exemplo, o replaceAll que te permite substituir um conjunto de caractéres (usando expressões regulares) por outra string.
     
  3. Um exemplozinho seria optimo
     
  4. rj.rodrigues

    rj.rodrigues Power Member

  5. AliFromCairo

    AliFromCairo Power Member

    Tens alguns na documentação da classe String, mas segue um exemplo para substituir os caractéres "." e "_" por um espaço " ":

    Código:
    "Uma_string.bonita".replaceAll("[._]", " ");
    // Resultado: "Uma string bonita"
    
     
  6. Mas agora temos um problema caso apareça _-. ou _- ou _. ele vai por dois espaços.

    Não existe maneira de colocar uma lista [._-] sempre que ele encontrar algum carecter existente na lista ponha um espaço e caso tivesem dois seguindos ponha na mesma um espaço.

    não sei se me fiz entender
     
  7. Fork

    Fork What is folding?

    Código:
    ...
    String fraze = "Ola_esta.tudo-_.bem";
    frase.replaceAll([\_\-\.]," ");
    System.out.print(frase);
    ...
    
    A regular expression pode não estar bem, trabalho pouco com elas.

    Isso sei que está mal, o . em Expressões regulares significa todos os caracteres.
     
    Última edição pelo moderador: 25 de Março de 2008
  8. AliFromCairo

    AliFromCairo Power Member

    Dentro de uma expressão envolvida por parênteses rectos (brackets), o caractér "." não é avaliado como um caractér especial e, como tal, a expressão acima está correcta.
     
    Última edição: 23 de Março de 2008
  9. Code: string.replaceAll([\_\-\.]," ");

    Erro:

    llegal start of expression
    llegal start of expression
     
  10. AliFromCairo

    AliFromCairo Power Member

    :007:.

    Utiliza a expressão que utilizei acima, adaptando-a às tuas necessidades (i.e. adicionando os caractéres que precisas).
     
  11. não funciona a tua expressão pois o script vai procurar por
    [._] e não encontra
     
  12. AliFromCairo

    AliFromCairo Power Member

    "[._]" é uma expressão regular, lê um pouco sobre elas, pois vão-te dar jeito. O método replaceAll, ao receber essa expressão como argumento (juntamente com a string de substituição " "), vai procurar pelos caractéres "." e "_", e vai substituí-los pelo caractér " ". Se os encontra ou não, vai depender do facto de as strings que estás a utilizar terem ou não esses caractéres que referi.
     
    Última edição: 23 de Março de 2008
  13. Ainda agora testei a tua expressão e não deu ele procura na string o que tiver dentro de "" e como nao encontra nao substitui, logo essa expreção está mal.
     
  14. AliFromCairo

    AliFromCairo Power Member

    Bom, senti-me tentado a testar:

    Código:
    String s = "Uma.string_bonita";
    String r = s.replaceAll("[._]", " ");
    System.out.println(r);
     
    // Output: "Uma string bonita"
    
    Como podes observar, o resultado está correcto.
     
  15. E estranho ai dar e aqui não visto ter o mesmo code. Não achas?
     
  16. Assim não dá.

    Assim já dá

    replaceAll("[\\.|\\-|\\_]", " ")
     
  17. AliFromCairo

    AliFromCairo Power Member

    Bom, aquela expressão faz o que eu disse que fazia correctamente (substitui o "." e "_" por " "). Era um exemplo (nota que falta um caractér), que tinha como objectivo seres tu a alterar para adicionar o caractér que faltava. Provavelmente o que fizeste foi usar "[.-_]" como expressão regular, o que não iria funcionar pois o caractér "-" tem um significado especial (range) dentro dos parênteses rectos. Terias que fazer o escape desse caractér (como fizeste no exemplo acima) ou então colocá-lo no início da expressão (i.e. replaceAll("[-._]", " ")).

    Já agora, a expressão que colocaste tem um problema, pois vai substituir o caractér "|" por um " ". Penso que o queres utilizar são parênteses curvos ao invés de parênteses rectos.

    Qualquer dúvida, consulta a documentação da classe primeiro (javadoc), pois ao contrário de outras documentações oficiais (como por exemplo, algumas classes de C++), as classes do Java estão muito bem documentadas.
     
  18. Não vai nada, isso so demonstra que nao percebes muito bem de java o caracter | esta ali a fazer de OU caso um daqueles 3 caracteres . _ - se encontrem na string ele susbstitui por um " ". Caso tenhas dúvidas vai testar porque aqui está mais que testado
     
  19. Fork

    Fork What is folding?

    O OR é || e não funciona em Strings, mas também é um caracter especial em expressões regulares (tenho ideia de ser).
     
  20. Baderous

    Baderous Banido

    O caracter | faz o OU lógico entre boleanos e não o OU condicional (||).
     

Partilhar esta Página