在CSDN上,有朋友问如下问题:
将0.23234替换成23%,用正则表达式如何处理的问题。
这个问题解决起来其实也很简单,问题在于:
1. 要零去掉,如果是0.212就当转换成21%而不能转换成021%,对于其它数字,如
1.212则要转换成121%,即第一位数字可能要除掉,也可能不除掉。
结论是:只有当数字前面除零外,无其它数字时才要将零去除。
2. 要将小数点去掉。
所以,将这个字符串分成五个部分来看待,
1. 可以以零打头的字符串的零串,如'00.212',则将'00'要分成一组,而'001.212',仍然要将'00'分成一组.
2. 要将小数点前,已经去掉零串部分的分成一组,组名称为<header>
3. 要将小数点为成一组<dot>
4. 要将小数点后指定位数内的小数串分成一组<rear>
5. 要将小数点后指定位数外的小数串分成一组。
组已经区分完成。
很容易得出,我们要捕获的组是header和rear
(0*(?<header>\d*)(?<dot>\.)(?<rear>\d{0,2}))\d*
这样替换的语句就写成
${header}${rear}%
将0.23234替换成23%,用正则表达式如何处理的问题。
这个问题解决起来其实也很简单,问题在于:
1. 要零去掉,如果是0.212就当转换成21%而不能转换成021%,对于其它数字,如
1.212则要转换成121%,即第一位数字可能要除掉,也可能不除掉。
结论是:只有当数字前面除零外,无其它数字时才要将零去除。
2. 要将小数点去掉。
所以,将这个字符串分成五个部分来看待,
1. 可以以零打头的字符串的零串,如'00.212',则将'00'要分成一组,而'001.212',仍然要将'00'分成一组.
2. 要将小数点前,已经去掉零串部分的分成一组,组名称为<header>
3. 要将小数点为成一组<dot>
4. 要将小数点后指定位数内的小数串分成一组<rear>
5. 要将小数点后指定位数外的小数串分成一组。
组已经区分完成。
很容易得出,我们要捕获的组是header和rear
(0*(?<header>\d*)(?<dot>\.)(?<rear>\d{0,2}))\d*
这样替换的语句就写成
${header}${rear}%
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步