java原始代码部分如下

public static final int ERR_ONLINE_DECLINED             = 1025;    //交易联机拒绝//public static final int    ERR_RESELECT_APP            = 1026;    //GPO返回0x6985,重新选择应用public static final int ERR_OFFLINE_APPROVED            = 1027;    //交易脱机批准

需要得到的excel结果

最终采用node配合以上插件来完成,将java代码中的相关数据采集出来.

1、先安装插件

npm install node-xlsx
npm install line-reader
npm install http
npm install md5-node

2、在百度翻译api上注册一个账号 领取免费使用额度

https://ai.baidu.com/ai-doc/MT/ykqq95r2y

本来是打算用谷歌的,但最近发现谷歌的都不能访问了,知道的大佬可以告知。

注册申请了之后可以得到一个appid和对应的秘钥。

正常使用会返回翻译的结果数据如下

{"from": "en","to": "zh","trans_result": [{"src": "apple","dst": "\u82f9\u679c" //苹果}]
}

3、接着编写完整node代码

//生成Excel依赖包
var xlsx = require('node-xlsx')
//写入文件依赖包
var fs = require('fs')
//一行一行读取
var lineReader = require('line-reader');
//网络请求
var http = require('http');
//md5加密
var md5 = require('md5-node');var sheetList = []var listCount = 0;lineReaderTxt()//将java文件代码的每一行读取
async function lineReaderTxt() {sheetList.push(['状态码', "状态值", "结果", "是否使用中", "代码行数来源"])var lineList = []var lineCount = 0lineReader.eachLine('PostCode.java', function(line, last) {lineCount += 1if (line.indexOf('//public static final int') != -1) {lineList.push(line)} else if (line.indexOf('public static final int') != -1) {lineList.push(line)}if (last) {console.log('最后一行了:', lineCount);const used = process.memoryUsage().heapUsed / 1024 / 1024;console.log(`The script uses approximately ${Math.round(used * 100) / 100} MB`);loopList(lineList)}});
}function loopList(lineList) {var successCount = 0console.log("开始新的循环", lineList.length)var lineCount = 0lineList.forEach((line, index) => {if (line.indexOf('//public static final int') != -1) {lineCount += 1translateOneJavaLine(line, false, lineCount, index == (lineList.length - 1), (item) => {successCount += 1console.log("successCount1:" + successCount, "lineList:" + lineList.length)})} else if (line.indexOf('public static final int') != -1) {lineCount += 1translateOneJavaLine(line, true, lineCount, index == (lineList.length - 1), (item) => {successCount += 1console.log("successCount2:" + successCount, "lineList:" + lineList.length)})}if (successCount == lineList.length) {writeDataToExcel()}})
}//讲数据写入excel
function writeDataToExcel() {console.log('写入excel前的校验', sheetList.length, listCount)//配置,设置列宽const options = {'!cols': [{wch: 30}, {wch: 10}, {wch: 50}, {wch: 20}, {wch: 20}]};//生成二进制数据流var buffer = xlsx.build([{name: "test",data: sheetList}], options);//写入文件fs.appendFile('./test13.xlsx', buffer, function(err) {if (err) {console.log(err, '保存excel出错')} else {console.log('写入excel成功!!!')}})
}//提取并翻译一行的数据
function translateOneJavaLine(line, isUsed, lineNum, isLast, callback) {if (line.indexOf("=") != -1) {var itemList = []//校验是否有 = 符号var lis = line.split('=')const errorDaihao = lis[0].split('final int')[1].replace(/(^\s*)|(\s*$)/g, "")// console.log('输出的状态', errorDaihao)itemList.push(errorDaihao)const second = lis[1]const errorCode = second.split(';')[0].replace(/(^\s*)|(\s*$)/g, "")// console.log('输出的状态码', errorCode)itemList.push(errorCode)const seconds = lis[1].split(';')if (seconds.length > 1) {if (seconds[1].indexOf('//') != -1) {const translateSrc = seconds[1].split('//')[1].replace(/(^\s*)|(\s*$)/g, "")itemList.push(`${translateSrc}`)itemList.push(isUsed ? '是' : '否')itemList.push(`${lineNum}`)sheetList.push(itemList)callback(itemList)} else {itemList.push('nothing')itemList.push(isUsed ? '是' : '否')itemList.push(`${lineNum}`)sheetList.push(itemList)callback(itemList)}}}
}//将中文翻译成引文 使用百度api
async function translateChineseToEnglish(keyword1) {var keyword = encodeURI(keyword1)// console.log('需要查询的数据', keyword)const appid = '20111008000339947'const secretKey = 'FGsDn1G62CdqyWVyFXQm'const randomStr = '1435660288'var params1 = `${appid}${keyword1}${randomStr}${secretKey}`var params2 = md5(params1)const baiduHost = 'http://api.fanyi.baidu.com/api/trans/vip/translate'let url =`${baiduHost}?q=${keyword}&from=zh&to=en&appid=${appid}&salt=${randomStr}&sign=${params2}`return new Promise((resolve) => {http.get(url, function(res) {res.setEncoding('utf8');var body = "";res.on('data', function(chunk) {body += chunk;}).on('end', function() {var obj = JSON.parse(body)if (obj.trans_result && obj.trans_result.length > 0) {const result = obj.trans_result[0].dst// console.log('翻译的结果是', result)resolve(result)}});}).on('error', function(e) {console.log('请求报错', JSON.stringify(e))})})
}

4、执行node脚本,输出excel

5、写完收工 向表妹交差

表妹求我写个node脚本,把java错误码表转成excel并翻译成英文相关推荐

  1. (压缩包在本地目录或由链接请求)使用jszip解压文件或compressing解压文件到指定目录,写个node脚本

    使用jszip解压文件与compressing解压zip文件到指定目录 一.介绍jszip和compressing模块 jszip和compressing模块都是可以压缩和解压缩zip文件,都可以通过 ...

  2. 语音转写基于科大讯飞WebApi接口的安卓实现--上传录音音频翻译成文字

    一.目的与实现过程 1.目的:将.wav/.mp3音频文件翻译成文字 2.方式:基于科大讯飞语音转写 WebApi的安卓实现 3.机制:采用自定义计时器轮询. 4.坑点1:科大讯飞当前暂无安卓文档/代 ...

  3. 用Node+wechaty写一个爬虫脚本每天定时给女朋友发微信暖心话

    点击上方"前端小苑",选择"置顶公众号" 精品技术文章,热门资讯第一时间送达 wechatBot 微信每日说,每日自动发送微信消息给你心爱的人 项目介绍 灵感来 ...

  4. 用Node+wechaty写一个爬虫脚本每天定时给女(男)朋友发微信暖心话

    wechatBot 微信每日说,每日自动发送微信消息给你心爱的人 项目介绍 灵感来源 在掘金看到了一篇<用Node + EJS写一个爬虫脚本每天定时女朋友发一封暖心邮件>后, 在评论区偶然 ...

  5. 用 Python + itchat 写一个爬虫脚本每天定时给女朋友发微信暖心话

    项目介绍: 灵感来源 在掘金看到了一篇<用Node+wechaty写一个爬虫脚本每天定时给女(男)朋友发微信暖心话>后,我就想为什么不用 Python 去实现这个功能呢. JUST TO ...

  6. 一键publish的node脚本

    需求背景 公司有8个前端项目,共使用四个公共包,基础包(baqi).医生公共包(baqi-doctor).患者公共包(baqi-patient).聊天包(baqi-chat). 开发分支上使用file ...

  7. 交叉编译飞思卡尔imx6烧写工具MFGtools脚本中的sfdisk小软件

    原文链接:(5条消息) 交叉编译飞思卡尔imx6烧写工具MFGtools脚本中的sfdisk小软件_bxf0817的专栏-CSDN博客 MFGtools中的脚本中有如此一段 sfdisk --forc ...

  8. 我写了一个脚本,可在“任意”服务器上执行命令!

    冰河之前维护着上千台服务器组成的服务器集群,如果每次需要在服务器上执行命令的时候,都要手动登录每台服务器进行操作的话,那也太麻烦了.你想想,如果在上千台服务器的集群中,每台服务器中只需要简单的执行一个 ...

  9. 用Kotlin写Android Gradle脚本

    Android应用开发中,离不开Gradle脚本的构建.大部分Android开发同学忽视了脚本的力量,甚至有很大一部分同学不知道Gradle脚本是什么,用什么语言编写的:当然,也有相当一部分同学知道G ...

最新文章

  1. Zookeeper分布式一致性原理(四):Zookeeper简介
  2. 人工神经网络_用人工神经网络控制猴子大脑,MIT科学家做到了
  3. 《javascript高级程序设计》第六章总结
  4. Django中ajax发送post请求,报403错误CSRF验证失败解决办法
  5. java线程统一_Java线程结果不一致
  6. C++编程笔记:贪心算法实现部分背包问题
  7. linux指定的文件不是虚拟磁盘,linux下挂载VHD等虚拟磁盘文件的方法
  8. 信息化项目甲方采购的准备与实施
  9. GTD时间管理系统入门
  10. Keil用C语言定义函数,STC单片机Keil中C语言函数定位的方法
  11. 【结巴分词】浅谈结巴分词算法原理
  12. 显卡刷bios改型号_显卡BIOS刷新方法(详细)
  13. 考试日复习【字符串处理函数】
  14. 随机存储器:SRAM、DRAM、SDRAM的区别
  15. 温故而知新,19646字Java基础知识梳理
  16. android系统 vender添加自定义的预编译的应用程序
  17. mysql中SQL语句查询表字段名、注释、字段类型
  18. word一行内英文单词之间间隔过大解决方法
  19. 卡马克快速平方根倒数
  20. 【C语言】冒泡排序学习笔记

热门文章

  1. 吉比特第三季营收13亿:靠“羊了个羊”走红 卢竑岩获分红3亿
  2. Codeforces Round #642 (Div. 3) F. Decreasing Heights 题解(dp+思维)
  3. PIC单片机实现双字节无符号数的乘法
  4. 计算机硬件和软件系统ppt,计算机硬件系统和软件系统.ppt
  5. POJ 1265 pick 定理
  6. 安卓学习日志 Day05 — MediaPlayer
  7. window7无法使用vlc客户端_解决libVLC无法响应鼠标消息
  8. 2021软件测试高薪就业学习路线(含视频教程)
  9. 基于猿题库网络请求再次封装
  10. Beijing Is Chinese Stocks' Benefactor