Ruddy Cahyanto:
Eu quero excluir todos os números em um String
exceto a quantidade 1
e 2
que autônomo. E então eu quero substituir 1
com one
e 2
com two
.
Por exemplo, a entrada e saída que espero são as seguintes:
String myString = "Happy New Year 2019, it's 1 January now,2 January tommorow";
resultado esperado:
myString = "Happy New Year, it's one January now,two January tommorow";
Assim, 1
e 2
em 2019
são excluídos, mas 1
e 2
que sozinhos são substituídos por one
e two
.
Eu tentei usar regex, mas todos os números foram apagados. Aqui está o meu código:
public String cleanNumber(String myString){
String myPatternEnd = "([0-9]+)(\\s|$)";
String myPatternBegin = "(^|\\s)([0-9]+)";
myString = myString.replaceAll(myPatternBegin, "");
myString = myString.replaceAll(myPatternEnd, "");
return myString;
}
Eu também tentei substituir com este regex [1]
e [2]
mas o 2019
torna two0one9
.
Eu não tenho nenhuma idéia de como mudar isso 1
e 2
que autônomo. Quaisquer recomendações?
anubhava:
Você pode usar replaceAll
nesta ordem:
myString = myString
.replaceAll("\\b1\\b", "one") // replace 1 by one
.replaceAll("\\b2\\b", "two") // replace 2 by two
.replaceAll("\\s*\\d+", ""); // remove all digits
//=> Happy New Year, it's one January now,two January tommorow
Também é importante usar limites de palavra durante a substituição 1
e 2
para evitar combinando esses dígitos como parte de algum outro número.