这篇文章是对这篇文章的更新:用regex获取字符串中的特定字符并删除未使用的零
首先,我想用正则表达式删除上次匹配中未使用的零。
我发现正则表达式对于我需要的东西来说有点过分了。
这是我现在想要的,
我想用 split()
方法
从中获得:
String myString = "2020-LI50532-3329-00100"
这是:
String data1 = "2020"
String data2 = "LI50532"
String data3 = "3329"
String data4 = "00100"
这样我就可以从最后一个 data
未使用的零
将“00100”转换为“100”
然后连接所有的数据得到这个
"2020-LI50532-3329-100"
我不熟悉分裂法,如果有人能告诉我这一点的话^^
6条答案
按热度按时间iovurdzv1#
您可以将最后一个字符串部分转换为整数类型,如下所示,以删除未使用的零:
mklgxw1f2#
您应该尽可能避免字符串操作,并依赖java语言中现有的类型。其中一种类型是整数。看起来您的代码由4部分组成-年(整数)-字符串-整数-整数。
因此,为了正确验证它,我将使用以下代码:
或者类似于:
如果要重建原始值,可能应该使用numberformat来添加缺少的0。
要点是:
始终尝试重用您的语言中可用的现有代码和工具
始终尝试使用可用类型(localdate、integer、long)
创建自己的类型(类)并使用面向对象语言的表达能力
mwkjh3gx3#
假设我们只想删除最后一个块的前导零,也许我们可以:
提取最后一个块
将其转换为整数并返回到字符串以删除前导零
用上述步骤中获得的字符串替换最后一个块
像这样:
p1iqtdky4#
你可以用
substring
删除前导零的方法。。。ecfdbz9o5#
使用regex的解决方案:
输出:
正则表达式的解释:
一个或多个零后跟一个非零数字,可以选择后跟任何数字,直到字符串结尾(由指定)
$
).不使用regex的解决方案:
你也可以用
Integer.parseInt
它可以解析一个字符串00100
进入100
.输出:
7qhs6swi6#
输出: