Eu já vi perguntas sobre como prefixar zeros aqui no SO. Mas não o contrário!
Vocês podem me sugerir como remover os zeros à esquerda no texto alfanumérico? Existem APIs internas ou preciso escrever um método para aparar os zeros à esquerda?
Exemplo:
01234 converts to 1234
0001234a converts to 1234a
001234-a converts to 1234-a
101234 remains as 101234
2509398 remains as 2509398
123z remains as 123z
000002829839 converts to 2829839
java
string
alphanumeric
jai
fonte
fonte
.replaceFirst("^0+(?!$)".toRegex(), "")
Você pode usar a classe StringUtils do Apache Commons Lang assim:
fonte
Como sobre a maneira regex:
As
^
âncoras para o início da string (suponho que, no contexto, suas strings não sejam multilinhas aqui, caso contrário, talvez seja necessário procurar o\A
início da entrada em vez do início da linha). Os0*
meios zero ou mais0
caracteres (você pode usar0+
também). OreplaceFirst
just substitui todos esses0
caracteres no início por nada.E se, como Vadzim, sua definição de zeros à esquerda não inclui transformar
"0"
(ou"000"
seqüências semelhantes) em uma sequência vazia (uma expectativa bastante racional), basta recolocá-la se necessário:fonte
Uma maneira clara, sem a necessidade de regExp e bibliotecas externas.
fonte
Para acompanhar a resposta do Apache Commons da thelost: usando bibliotecas de goiaba (a biblioteca de utilitários Java de uso geral do Google, que eu argumentaria que deveria estar agora no caminho de classe de qualquer projeto Java não trivial), isso usaria o CharMatcher :
fonte
Se você estiver usando o Kotlin Este é o único código que você precisa:
fonte
Você poderia apenas fazer:
String s = Integer.valueOf("0001007").toString();
fonte
Use a
StringUtils
classe Apache Commons :fonte
Usa isto:
fonte
Usando Regexp com grupos:
fonte
Usar regex como algumas das respostas sugerem é uma boa maneira de fazer isso. Se você não quiser usar regex, poderá usar este código:
fonte
String
... use a abordagem do artífice .Eu acho que é tão fácil fazer isso. Você pode fazer um loop sobre a string desde o início e remover zeros até encontrar um caractere diferente de zero.
fonte
Se você (como eu) precisar remover todos os zeros à esquerda de cada "palavra" em uma string, poderá modificar a resposta dos @polygenelubricants para o seguinte:
o que resulta em:
fonte
Sem usar
Regex
ousubstring()
função naString
qual será ineficiente -fonte
Você poderia substituir
"^0*(.*)"
a"$1"
com regexfonte
fonte
Se você não quiser usar regex ou biblioteca externa. Você pode fazer com "for":
fonte
String
gerado durante este ciclo ... se houver 10000
...Fiz alguns testes de benchmark e descobri que a maneira mais rápida (de longe) é esta solução:
Expressões especialmente regulares são muito lentas em uma iteração longa. (Eu precisava descobrir o caminho mais rápido para um trabalho em lote.)
fonte
E que tal procurar pelo primeiro caractere diferente de zero?
Essa regex localiza o primeiro dígito entre 1 e 9 seguido por qualquer número de dígitos; portanto, para "00012345", ele retorna "12345" . Pode ser facilmente adaptado para seqüências alfanuméricas.
fonte