2016-04-06 2 views
0

Я хочу обрезать эту строку.Удалить ведущие нули из числа в строке

"0000819780"

Как я могу получить только "819780" часть.

Я могу сделать это с моей стороны, просто любопытно, есть ли какой-либо «элегантный» или «правильный» способ сделать это.

+1

Каков ваш путь? – Jason

+0

Что вы хотите сделать с частью '819780'? –

+0

Каков ваш путь для «0000000»? Пустая строка или «0»? – Thilo

ответ

2

Я надеюсь, что это работает:

try { 
    int i=Integer.parseInt(yourString) 
    System.out.println(i); 
    }catch(Exception e) 
    {//String has something more than number 
    } 
+0

И затем int, если вам нужно. –

+0

Thnks god it works –

0
while(str.length() >= 1 && str.charAt(0) == '0') 
    str = str.substring(1); 
+2

К сожалению, вы помните * неправильно *. Он удаляет пробелы только в начале и в конце строки. –

+0

Хорошо, спасибо за это. Простой цикл while должен делать трюк. – Danny0317

3

Альтернатива:

Использование Apache Commons StringUtils класс:

StringUtils.stripStart(String str, String stripChars); 

Для примера:

StringUtils.stripStart("0000819780", "0"); //should return "819780" 
2

Если вход всегда является числом, и вы хотите удалить только начальные нули, просто проанализируйте его в целое число. Если вы хотите его в строчном формате, проанализируйте его.

String a = "0000819780"; 
System.out.println(Long.parseLong(a)); 

Проверьте https://ideone.com/7NMxbE за текущий код.

Если она может иметь отличные от чисел значения, вам нужно будет поймать NumberFormatException

+0

спасибо, что он работает –

+0

Возможно, используйте 'Long'. Не все десятизначные целые числа вписываются в 'Integer'. – Thilo

+0

@ Тило, спасибо, что указали это. Я обновил ответ. –

4

Есть много способов, вы можете удалить ведущие нули из вашего String; один подход, итерирует String слева направо останавливая на рядом с последним символом (так что вы не стираете последнюю цифру) остановкой, если вы столкнулись с ненулевым и вызывать String.substring(int) как

String str = "0000819780"; 
for (int i = 0, length = str.length() - 1; i < length; i++) { 
    if (str.charAt(i) != '0') { 
     str = str.substring(i); 
     break; 
    } 
} 
System.out.println(str); 

В качестве альтернативы, разбора String как

int v = Integer.parseInt(str); 
System.out.println(v); 
3

элегантный чистый ява способ просто "0000819780".replaceFirst("^0+(?!$)", "")

+1

Это вернет пустую строку для ввода «0000». – Thilo

+0

Вы правы. Я изменил его сейчас. – falcon

0

Double а = Double.parseDouble ("00346632");

Строка xyz = String.format ("%. 0f", abc);

Смежные вопросы