标题: [文本处理] 怎样批量计算后替换文本内容 [打印本页]
作者: smss 时间: 2019-7-16 23:57 标题: 怎样批量计算后替换文本内容
本帖最后由 smss 于 2019-7-17 13:22 编辑
文本A.xml中有大量数值需要除以1.5后再用 有余数时4舍5入保留小数点后2位
例句- <Button name="clean" y="#sh-940/1.5" w="270/1.5" h="235/1.5" alignV="bottom" alignChildren="true">
- <Rectangle w="270/1.5" h="235/1.5" fillColor="#ffffff" strokeColor="#cdcdcd" />
- </Button>
复制代码
生成- <Button name="clean" y="#sh-626.67" w="180" h="156.67" alignV="bottom" alignChildren="true">
- <Rectangle w="180" h="156.67" fillColor="#ffffff" strokeColor="#cdcdcd" />
- </Button>
复制代码
计算所有""之间数值 运算符含+-*/ (加减乘除 还有取模函数等等 就不涉及了)
例如x="65+5" 调试时加的5 这样一多,一个个改太费事 因此想批量计算后替换掉原来的值 以减少程序计算量 提高效率
作者: xczxczxcz 时间: 2019-7-17 09:41
举个栗子:- ((gc 1.xml -ReadCount 0 -enc utf8)|%{foreach($i in [regex]::Matches($_,'\d+/1.5').value){$r=$i.split('/');$_=$_ -replace $i,[math]::Round(($r[0]/1.5),2);};$_})|sc a.xml -enc UTF8 -Force;
复制代码
作者: smss 时间: 2019-7-17 11:00
本帖最后由 smss 于 2019-7-17 12:49 编辑
回复 2# xczxczxcz
能不能再改改 当出现y="117.5/1.5" 会运算成y="117.3.33" 即运算5/1.5
可以直接把<Button name="clean" y="#sh-940" w="270" h="235" alignV="bottom" alignChildren="true">
中出现的数值替换成其除以1.5后的值吗
作者: flashercs 时间: 2019-7-17 12:23
本帖最后由 flashercs 于 2019-7-17 12:25 编辑
jscript脚本- var strxml = '<Button name="clean" y="#sh-940/1.5" w="270/1.5" h="235/1.5" alignV="bottom" alignChildren="true">' +
- '<Rectangle w="270/1.5" h="235/1.5" fillColor="#ffffff" strokeColor="#cdcdcd" />' +
- '</Button>';
- strxml.replace(/<[^>]+>/g, function ($0) {
- return $0.replace(/"[^"]+"/g, function ($0) {
- return $0.replace(/[-+*/%()\d.]+/g, function ($0) {
- try {
- return (eval($0)).toFixed(2);
- } catch (e) {
- return $0;
- }
- });
- });
- });
复制代码
结果为:- <Button name="clean" y="#sh-626.67" w="180.00" h="156.67" alignV="bottom" alignChildren="true"><Rectangle w="180.00" h="156.67" fillColor="#ffffff" strokeColor="#cdcdcd" /></Button>
复制代码
作者: xczxczxcz 时间: 2019-7-20 14:10
回复 3# smss
把 下面的替换一下。
‘\d+/1.5' ===> '[\d\./]+(?=")'
第二个问题可以 。整数,小数,数学表达式(可带小括号),可带开根之类。当然也复杂了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |