Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中删除字符串的前导零_Java_String - Fatal编程技术网

如何在java中删除字符串的前导零

如何在java中删除字符串的前导零,java,string,Java,String,我知道我们可以使用字符串Utils库。但是如果字符串只有“0”怎么办。它返回“”。除了“0”之外,我们还有其他方法删除所有其他字符串的前导0吗 以下是场景: 因此,我正在截断用户在客户端输入的字符串的值。所有输入都以字符串的形式进行。例如,如果用户输入部门号为009,我会将其截断为9。08年应该是8。但是,这里有一个部门有0。因此,当用户仅输入0时,此方法也会删除0 如果输入是000,又会怎样呢。我需要最后一个0,而不截断out。如果您想使用基于正则表达式的方法,那么一个选项就是从开头开始贪婪地

我知道我们可以使用字符串Utils库。但是如果字符串只有“0”怎么办。它返回“”。除了“0”之外,我们还有其他方法删除所有其他字符串的前导0吗

以下是场景:


因此,我正在截断用户在客户端输入的字符串的值。所有输入都以字符串的形式进行。例如,如果用户输入部门号为009,我会将其截断为9。08年应该是8。但是,这里有一个部门有0。因此,当用户仅输入0时,此方法也会删除0


如果输入是000,又会怎样呢。我需要最后一个0,而不截断out。

如果您想使用基于正则表达式的方法,那么一个选项就是从开头开始贪婪地删除所有零,只要我们不替换字符串中的最后一个字符。以下模式可实现此目的:

^0+(?=.)
前瞻确保至少还有一个数字剩余,因此,最终零将永远不会被替换

String input1 = "040008";
String input2 = "000008";
String input3 = "000000";
input1 = input1.replaceAll("^0+(?=.)", "");
input2 = input2.replaceAll("^0+(?=.)", "");
input3 = input3.replaceAll("^0+(?=.)", "");
System.out.println(input1);
System.out.println(input2);
System.out.println(input3);

40008
8
0


顺便说一下,我喜欢“CAMKICR”的答案,你应该把它看作是一个选项。

如果你想使用基于正则表达式的方法,那么一个选项就是贪婪地从一开始就删除所有的零点,只要我们不替换字符串中的最后一个字符。以下模式可实现此目的:

^0+(?=.)
前瞻确保至少还有一个数字剩余,因此,最终零将永远不会被替换

String input1 = "040008";
String input2 = "000008";
String input3 = "000000";
input1 = input1.replaceAll("^0+(?=.)", "");
input2 = input2.replaceAll("^0+(?=.)", "");
input3 = input3.replaceAll("^0+(?=.)", "");
System.out.println(input1);
System.out.println(input2);
System.out.println(input3);

40008
8
0

顺便说一下,我喜欢“CAMKICR”的答案,你应该把它看作是一个选项。 我知道我们可以使用字符串Utils库。但是如果字符串只有“0”怎么办。它返回“”。除了“0”之外,我们还有其他方法删除所有其他字符串的前导0吗

您可以创建自己的实用程序方法,该方法完全满足您的需要

你还没有回答我关于部门可以是字母数字还是数字的问题

根据您的示例,您可以将字符串转换为整数。整数的toString()实现删除前导零:

    System.out.println( new Integer("008").toString() );
    System.out.println( new Integer("000").toString() );
    System.out.println( new Integer("111").toString() );
如果字符串可以包含字母数字,那么逻辑将更加复杂,这就是为什么完整定义输入很重要的原因

对于字母数字字符串,您可以执行以下操作:

StringBuilder sb = new StringBuilder("0000");

while (sb.charAt(0) == '0' && sb.length() > 1)
    sb.deleteCharAt(0);

System.out.println(sb);
int i = 0;

while (product.charAt(i) == '0' && i < product.length() - 1)
    i++;

System.out.println( product.substring(i) );
或者,更有效的实施方式是:

StringBuilder sb = new StringBuilder("0000");

while (sb.charAt(0) == '0' && sb.length() > 1)
    sb.deleteCharAt(0);

System.out.println(sb);
int i = 0;

while (product.charAt(i) == '0' && i < product.length() - 1)
    i++;

System.out.println( product.substring(i) );
在所有解决方案中,您将创建一个方法,将参数传递给该方法,然后返回字符串结果

我知道我们可以使用字符串Utils库。但是如果字符串只有“0”怎么办。它返回“”。除了“0”之外,我们还有其他方法删除所有其他字符串的前导0吗

您可以创建自己的实用程序方法,该方法完全满足您的需要

你还没有回答我关于部门可以是字母数字还是数字的问题

根据您的示例,您可以将字符串转换为整数。整数的toString()实现删除前导零:

    System.out.println( new Integer("008").toString() );
    System.out.println( new Integer("000").toString() );
    System.out.println( new Integer("111").toString() );
如果字符串可以包含字母数字,那么逻辑将更加复杂,这就是为什么完整定义输入很重要的原因

对于字母数字字符串,您可以执行以下操作:

StringBuilder sb = new StringBuilder("0000");

while (sb.charAt(0) == '0' && sb.length() > 1)
    sb.deleteCharAt(0);

System.out.println(sb);
int i = 0;

while (product.charAt(i) == '0' && i < product.length() - 1)
    i++;

System.out.println( product.substring(i) );
或者,更有效的实施方式是:

StringBuilder sb = new StringBuilder("0000");

while (sb.charAt(0) == '0' && sb.length() > 1)
    sb.deleteCharAt(0);

System.out.println(sb);
int i = 0;

while (product.charAt(i) == '0' && i < product.length() - 1)
    i++;

System.out.println( product.substring(i) );

在所有的解决方案中,您都会创建一个方法,将参数传递给该方法,然后返回字符串结果。

您能详细解释一下您需要什么吗?字符串是否只包含数字?或者它也包含字母字符?使用输入数据和预期输出的格式更新您的问题。因此,我将截断用户在客户端输入的字符串的值。所有输入都以字符串的形式进行。例如,如果用户输入部门号为009,我会将其截断为9。08年应该是8。但是,这里有一个部门有0。因此,当用户只输入0时,此方法也会删除0。@JamesKristen不要忘记通过单击您使用的解决方案旁边的复选标记来“接受”答案,这样人们就知道问题已经解决。您能详细解释一下您需要什么吗?您的字符串是否只包含数字?或者它也包含字母字符?使用输入数据和预期输出的格式更新您的问题。因此,我将截断用户在客户端输入的字符串的值。所有输入都以字符串的形式进行。例如,如果用户输入部门号为009,我会将其截断为9。08年应该是8。但是,这里有一个部门有0。因此,当用户只输入0时,此方法也会删除0。@JamesKristen不要忘记通过单击您使用的解决方案旁边的复选标记来“接受”答案,以便人们知道问题已经解决。