【发布时间】:2017-07-10 16:47:58
【问题描述】:
我正在尝试从字符串的数字部分中删除所有前导零。我想出了这段代码(如下)。从给定的示例中,它起作用了。但是当我在开头添加一个“0”时,它不会给出正确的输出。有人知道如何实现这一目标吗?提前致谢
输入:(2016)abc00701def00019z -> 输出:(2016)abc701def19z -> 结果:正确
输入:0(2016)abc00701def00019z -> 输出:(2016)abc71def19z -> 结果:错误 -> 预期输出:(2016)abc701def19z
编辑:字符串可以包含非英文字母。
String localReference = "(2016)abc00701def00019z";
String localReference1 = localReference.replaceAll("[^0-9]+", " ");
List<String> lists = Arrays.asList(localReference1.trim().split(" "));
System.out.println(lists.toString());
String[] replacedString = new String[5];
String[] searchedString = new String[5];
int counter = 0;
for (String list : lists) {
String s = CharMatcher.is('0').trimLeadingFrom(list);
replacedString[counter] = s;
searchedString[counter++] = list;
System.out.println(String.format("Search: %s, replace: %s", list,s));
}
System.out.println(StringUtils.replaceEach(localReference, searchedString, replacedString));
【问题讨论】:
-
我敢打赌它有一个正则表达式,但你也可以取出所有数字并将它们转换为一个整数。这将删除所有前导零。然后,您只需用新值替换以前的值
-
@XtremeBaumer 但是对于太大而无法容纳 int 的大量序列,这将失败
-
@Sentry 不确定,但也许 BigInteger 也会删除前导零。我怀疑你会有一个包含数字的字符串来重载 bigInteger
-
How to remove leading zeros from alphanumeric text? 的可能重复项这有帮助吗???
-
@CKing 不是真的。它只删除第一个零,但不删除字符串中间的零。您必须进行 2 次替换,但正则表达式应该与 1 次替换一起使用