有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从字符串中的数字中删除前导零

我想修剪这根绳子

“0000819780”

我怎样才能得到“819780”部分

我可以用我的方式来做,只是好奇有没有“优雅”或“正确”的方式来做这件事


共 (6) 个答案

  1. # 1 楼答案

    如果输入总是一个数字,并且只想删除开头的零,只需将其解析为整数即可。如果想要字符串格式,请将其重新解析

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

    检查https://ideone.com/7NMxbE是否有正在运行的代码

    如果它可以有数字以外的值,则需要捕捉NumberFormatException

  2. # 2 楼答案

    备选方案:

    使用Apache Commons StringUtils类:

    StringUtils.stripStart(String str, String stripChars);
    

    举个例子:

    StringUtils.stripStart("0000819780", "0");  //should return "819780" 
    
  3. # 3 楼答案

    我希望这能奏效:

    try {
       int i = Integer.parseInt(yourString);
       System.out.println(i);
    } catch(NumberFormatException e) {
       // the string is not a number
    }
    
  4. # 4 楼答案

    while(str.length() >= 1 && str.charAt(0) == '0')
       str = str.substring(1);
    
  5. # 5 楼答案

    一种优雅的纯java方式就是"0000819780".replaceFirst("^0+(?!$)", "")

  6. # 6 楼答案

    有很多方法可以从^{中删除前导零;一种方法是,如果遇到非零字符,从左到右迭代String,在最后一个字符的旁边停止(这样就不会擦除最后一个数字),然后调用String.substring(int)like

    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);