public static String removeLeadingZeroes(String value):
给定一个有效的非空输入,该方法应该返回所有前导零被删除的输入。因此,如果输入是“0003605”,则该方法应返回“3605”。作为特殊情况,当输入仅包含零(例如“000”或“0000000”)时,该方法应返回“0”
public class NumberSystemService {
/**
*
* Precondition: value is purely numeric
* @param value
* @return the value with leading zeroes removed.
* Should return "0" for input being "" or containing all zeroes
*/
public static String removeLeadingZeroes(String value) {
while (value.indexOf("0")==0)
value = value.substring(1);
return value;
}
我不知道如何为字符串编写代码" 0000"。
答案 0 :(得分:29)
如果字符串始终包含有效整数,则return new Integer(value).toString();
是最简单的。
public static String removeLeadingZeroes(String value) {
return new Integer(value).toString();
}
答案 1 :(得分:3)
一些示例代码可以解决您的问题:
public String stripLeadingZeros(final String data)
{
final String strippedData;
strippedData = StringUtils.stripStart(data, "0");
return StringUtils.defaultString(strippedData, "0");
}
答案 2 :(得分:1)
您可以添加对字符串长度的检查:
public static String removeLeadingZeroes(String value) {
while (value.length() > 1 && value.indexOf("0")==0)
value = value.substring(1);
return value;
}
答案 3 :(得分:1)
private String trimLeadingZeroes(inputStringWithZeroes){
final Integer trimZeroes = Integer.parseInt(inputStringWithZeroes);
return trimZeroes.toString();
}
答案 4 :(得分:1)
您可以使用下面的替换功能,它将对具有字母数字或数字的字符串起作用
s.replaceFirst("^0+(?!$)", "")
答案 5 :(得分:0)
我会先考虑检查一下这个案子。通过字符检查非“0”字符循环字符串字符。如果您看到非“0”字符,请使用您拥有的进程。如果不这样做,则返回“0”。这是我将如何做(未经测试,但接近)
boolean allZero = true;
for (int i=0;i<value.length() && allZero;i++)
{
if (value.charAt(i)!='0')
allZero = false;
}
if (allZero)
return "0"
...The code you already have
答案 6 :(得分:0)
您可以使用模式匹配器检查仅包含零的字符串。
public static String removeLeadingZeroes(String value) {
if (Pattern.matches("[0]+", value)) {
return "0";
} else {
while (value.indexOf("0") == 0) {
value = value.substring(1);
}
return value;
}
}
答案 7 :(得分:0)
你可以试试这个:
1.如果字符串的数值为0,则返回新字符串(“0”)
2.否则从字符串中删除零,返回子字符串。
public static String removeLeadingZeroes(String str)
{
if(Double.parseDouble(str)==0)
return new String("0");
else
{
int i=0;
for(i=0; i<str.length(); i++)
{
if(str.charAt(i)!='0')
break;
}
return str.substring(i, str.length());
}
}
答案 8 :(得分:0)
使用String.replaceAll(),如下所示:
public String replaceLeadingZeros(String s) {
s = s.replaceAll("^[0]+", "");
if (s.equals("")) {
return "0";
}
return s;
}
这将匹配所有前导零(使用正则表达式^ [0] +)并用空格替换它们。最后,如果您只留下一个空白字符串,则返回“0”。
答案 9 :(得分:0)
public String removeLeadingZeros(String digits) {
//String.format("%.0f", Double.parseDouble(digits)) //Alternate Solution
String regex = "^0+";
return digits.replaceAll(regex, "");
}
removeLeadingZeros("0123"); //Result -> 123
removeLeadingZeros("00000456"); //Result -> 456
removeLeadingZeros("000102030"); //Result -> 102030
答案 10 :(得分:0)
int n = 000012345;
n = Integer.valueOf(n + "", 10);
指定基数10很重要,否则整数将被读取为八进制文字并返回错误的值。
答案 11 :(得分:0)
public String removeLeadingZeros(String num) {
String res = num.replaceAll("^0+", "").trim();
return res.equals("")? "0" : res;
}
答案 12 :(得分:0)
我发现以下是最简单和最可靠的,因为它适用于整数和浮点数:
public static String removeNonRequiredLeadingZeros(final String str) {
return new BigDecimal(str).toPlainString();
}
您可能想要检查传入的字符串是否为空和空白,并修剪它以删除前导和尾随空格。
您还可以使用以下方法去除尾随零:
public static String removeNonRequiredZeros(final String str) {
return new BigDecimal(str).stripTrailingZeros().toPlainString();
}