前言
大家好,我是HoMeTown
继上次用Js+Css给Boss秀完肌肉💪🏻,打出组合拳之后,(#敢在我工位装摄像头?吃我一套JS ➕ CSS组合拳!!👊🏻),今天是老板奖励我连续工作的第7/31
天,不过就在今天,这个糟糕的事情终于赢来了新的转机,老板有了一个大不大,小不小的个人需求想让我看能不能写一段脚本,帮他度过难关,听完之后,我觉得是时候拿回作为程序员的尊严!展示一把真正的肌肉💪🏻了(破音~~~!)。
老板的小需求
事情是这样,Boss娘最近在与某个厂进行科技产品的业务合作,搞了一大堆的pdf文件需要整理,里面有很多类似这样的数字:
需求呢是需要复制这些123,453,432,434.31
数字到excel里进行整理,但是工作量实在是太大了,主要面临了三个十分影响工作效率的问题:
- 复制过去的数字有
,
,理想状态是去掉,
。 - 文档里的数字都是
¥
单位,但是Boss需要统计万¥
单位,不想每次都自己数小数点。 - 复制过去的数字只想保留两位小数
我的Boss作为一个标准的好男人...
直接对其夸下海口:“实不相瞒,我有一个技术伙伴...”。
然后对我也许下大饼:“多久没休息了,帮我把这个弄好了,休休年假?旅旅游?陪陪弟妹?”
我:“哎呀,说这干啥,都是兄弟,而且是嫂子有需要,顺手的事儿。话说,休年假这事儿此话当真?”
弄!
呐,这个问题对我来说,确实是 so easy。
撸起袖子!
开干!
新建boss.js
文件,定义函数formatNumberFun
function formatNumberFun(numstr) { if(typeof numstr !== 'string') { return new Error('pls input numstr, type is string') } // 首先把','替换成'',并且转换成number,在/10000 ,最后保留两位小数! const num = (parseFloat(numstr.replace(/,/g, "") / 10000))?.toFixed(2) return num } console.log(formatNumberFun('123,123,332,11.213123')) 复制代码
输出一下:
1231233.32
完美解决!
还没完!
我高兴的告诉Boss,看到这段代码了吗,告诉嫂子要是用的话,就把123,123,332,11.213123
替换成她想要处理的数字,然后再打开终端,执行node boss.js
,就可以看到处理完的结果了。
完事儿,收拾东西,通知媳妇,订机票,准备出发!
然而事实证明...我高兴的太早了。
“哎,老弟,请留步,有几句话需要叮嘱,不知当讲否?”
“但说无妨!”
Boss曰:太麻烦?
这也太麻烦了,我怕你嫂子用不明白,能不能简单点?只执行一个命令。
行,我来办:
// 修改函数 formatNumberFun的参数numstr默认值 function formatNumberFun(numstr = process.argv[2] ) { ... } 复制代码
执行命令
node boss.js 123,123,332,11.213123 // 输出 1231233.32 复制代码
“ok了,我走啦”
“请留步”
Boss曰:粘贴?
这还得自己手动复制啊,能不能直接粘贴到粘贴板? 行,我来办:
const { exec } = require("child_process"); (async function () { const numstr = process.argv[2]; const resultnum = (Number(numstr.replace(/,/g, "")) / 10000).toFixed(2); await exec("clip").stdin.end(resultnum); await exec("pbcopy").stdin.end(resultnum); await exec("xclip").stdin.end(resultnum); })(); 复制代码
“ok了,我走啦”
“请留步”
Boss曰:中文逗号?
发现好像有的地方复制过来的逗号是中文逗号。
行,我来办:
const resultnum = (Number(numstr.replace(/,|,/g, "")) / 10000).toFixed(2); 复制代码
“ok了...”
“行,晚上9点和xx有个会,13A会议室到时候别迟到哈,明天中午叫上xx一起过一下xx的设计,后天咱得去一趟xx...”
“我****n*******t*!!!!”
老板娘曰:牛!🐂!niu!
你看看人家,不仅完成自己本职工作,还能帮兄弟解决问题,这人不仅仅是好兄弟,好朋友,更是好同事,好员工!
为什么不做pdf识别?
一、单位不同
二、无规律的数字处理
需要哪个数字,是人家看到了觉得有用的才往过粘的。
三、业务类型繁杂
每份文件的内容格式是完全不一样的。
总结
这篇文章主要给大家分享两个知识点:
- NodeJs 命令行传递参数
- NodeJs 复制文本到剪切板