巧用NodeJs帮老板解决个人需求!老板娘直呼:"牛!niu!🐂!"

简介: 大家好,我是HoMeTown继上次用Js+Css给Boss秀完肌肉💪🏻,打出组合拳之后,(#敢在我工位装摄像头?吃我一套JS ➕ CSS组合拳!!👊🏻),今天是老板奖励我连续工作的第7/31天,不过就在今天,这个糟糕的事情终于赢来了新的转机,老板有了一个大不大,小不小的个人需求想让我看能不能写一段脚本,帮他度过难关,听完之后,我觉得是时候拿回作为程序员的尊严!展示一把真正的肌肉💪🏻了(破音~~~!)。

前言

大家好,我是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 复制文本到剪切板


目录
相关文章
|
3月前
|
前端开发 JavaScript UED
惊呆了!这些前端技巧竟然能让你的网站秒变高大上,赶快学起来!
前端技术是网页设计的核心,能够显著提升用户体验和网站竞争力。本文介绍了三种实用的前端技巧:动态背景效果、微交互设计和响应式设计。通过CSS动画和JavaScript,可以实现视觉吸引的动态背景;微交互设计如按钮点击效果能增强用户参与感;响应式设计则确保网站在不同设备上呈现良好效果。这些技巧简单易学,效果显著,值得尝试。
53 3
|
6月前
|
存储 前端开发 JavaScript
太爽了!这12个前端库,帮我在工作中赢得了不少摸鱼时间!!
太爽了!这12个前端库,帮我在工作中赢得了不少摸鱼时间!!
|
9月前
|
数据采集 大数据 Python
学Python静不下来,看了一堆资料还是很迷茫是为什么
学Python静不下来,看了一堆资料还是很迷茫是为什么
71 2
学Python静不下来,看了一堆资料还是很迷茫是为什么
|
Cloud Native Go Python
面试前夜:最后准备的小贴士
面试前夜:最后准备的小贴士
75 0
|
人工智能 IDE 算法
【周末闲谈】新的编程方式,程序员的未来何在?
【周末闲谈】新的编程方式,程序员的未来何在?
142 0
|
监控 前端开发 jenkins
新来个技术总监,给团队引入了这款开发神器,同事直呼哇塞
带团队时间久了,就能发现整个 Team 都渐渐疲了。前两年老板还专门买了个系统搞 OKR,现在也不大提了;Scrum 我们也搞了,用起来也就那样;项目管理工具试了好几个,禅道、Worktile、现在用 Coding,反正有一个能用的就行;微服务化改造从去年开始在吭哧吭哧搞,我们自己搞得觉得很厉害,但业务部门那边就觉得没啥差别,搞不懂你们研发部门每天在弄些什么,赶紧做我们提的需求要紧。
新来个技术总监,给团队引入了这款开发神器,同事直呼哇塞
|
前端开发 网络协议 jenkins
三分钟,我让搞后端的学弟爱上了Eolink
突然某一天,一个特别能卷的学弟向我请教接口工具……
三分钟,我让搞后端的学弟爱上了Eolink
技术总监亲自上阵,手撸了一门编程语言,同事直呼哇塞
都说程序员的三大浪漫是:操作系统、编译原理、图形学;但图形学确实是特定的专业领域,我们几乎接触不到,所以对我来说换成网络更合适一些,最后再加上一个数据库。 这四项技术如果都能掌握的话,可以在 IT 行业横着走了,加上这几年互联网行业越来越不景气,越底层的技术就越不可能被替代;所以为了给自己的 30+ 危机留点出路,从今年上半年开始我就逐渐开始从头学习编译原理。 功夫不负有心人,经过近一个月的挑灯夜战,每晚都在老婆的催促下才休息,克服了中途好几次想放弃的冲动,终于现在完成了 GScript 一个预览版。 预览版的意思是语法结构与整体设计基本完成,后续更新也不太会改动这部分内容、但还缺少一些易用功
|
程序员
程序人生 - 程序员要学点儿理财知识,而不仅仅是代码技巧
程序人生 - 程序员要学点儿理财知识,而不仅仅是代码技巧
152 0
程序人生 - 程序员要学点儿理财知识,而不仅仅是代码技巧
|
Python Windows
【教你用python挣零花钱】自动化简历内推,学弟直呼牛逼!!
【教你用python挣零花钱】自动化简历内推,学弟直呼牛逼!!
【教你用python挣零花钱】自动化简历内推,学弟直呼牛逼!!