begincsdn .NET 趴趴窝
[天行健,君子以自强不息]
[天道酬勤思]
在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}%

posted on 2005-07-13 12:55  begincsdn  阅读(1697)  评论(1编辑  收藏  举报