Я видел вопросы о том, как префиксировать нули здесь, в SO. Но не наоборот!
Не могли бы вы, ребята, подсказать, как убрать начальные нули в буквенно-цифровом тексте? Существуют ли какие-либо встроенные API или мне нужно написать метод для обрезания лидирующих нулей?
Пример:
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
джай
источник
источник
.replaceFirst("^0+(?!$)".toRegex(), "")
Вы можете использовать класс StringUtils из Apache Commons Lang следующим образом:
источник
Как насчет регулярного выражения:
В
^
анкеры к началу строки (я предполагаю , что из контекста ваших строк не многострочные здесь, в противном случае вам , возможно , придется смотреть в\A
для начала ввода , а не начала строки). В0*
означает ноль или более0
символов (вы могли бы использовать0+
, а). ThereplaceFirst
Just заменяет все эти0
символы в начале ничем.И если, как и Вадим, ваше определение ведущих нулей не включает превращение
"0"
(или"000"
аналогичные строки) в пустую строку (достаточно рациональное ожидание), просто при необходимости верните ее обратно:источник
Ясный путь без необходимости использования regExp и каких-либо внешних библиотек.
источник
Чтобы перейти к ответу Apache Commons thelost: используя guava-библиотеки (универсальная служебная библиотека Java от Google, которая, я бы сказал, должна теперь находиться на пути к классам любого нетривиального Java-проекта), это будет использовать CharMatcher :
источник
Если вы используете Kotlin Это единственный код, который вам нужен:
источник
Вы могли бы просто сделать:
String s = Integer.valueOf("0001007").toString();
источник
Используйте
StringUtils
класс Apache Commons :источник
Использовать это:
источник
Использование Regexp с группами:
источник
Использование регулярных выражений, как показывают некоторые ответы, является хорошим способом сделать это. Если вы не хотите использовать регулярные выражения, вы можете использовать этот код:
источник
String
... использовать вместо этого magiccrafter подход .Я думаю, что это так легко сделать. Вы можете просто зациклить строку с самого начала и удалять нули, пока не найдете ненулевой символ.
источник
Если вам (как и мне) нужно удалить все начальные нули из каждого «слова» в строке, вы можете изменить ответ @polygenelubricants следующим образом:
что приводит к:
источник
Без использования
Regex
илиsubstring()
функции,String
которая будет неэффективной -источник
Вы можете заменить
"^0*(.*)"
на"$1"
регулярное выражениеисточник
источник
Если вы не хотите использовать регулярные выражения или внешнюю библиотеку. Вы можете сделать с "для":
источник
String
сгенерировано во время этого цикла ... если есть 10000
...Я провел несколько тестов производительности и обнаружил, что самым быстрым (на сегодняшний день) способом является это решение:
Особенно регулярные выражения очень медленные в длинной итерации. (Мне нужно было найти самый быстрый способ выпечки.)
источник
А как насчет просто поиска первого ненулевого символа?
Это регулярное выражение находит первую цифру от 1 до 9, за которой следует любое количество цифр, поэтому для «00012345» возвращается «12345» . Его можно легко адаптировать для буквенно-цифровых строк.
источник