2021-09-10

本文介绍了如何使用Node.js进行文件操作,如读写json和md文件,并展示了数据整理与转换的步骤,包括JSON格式的增删和文本文件内容解析。此外,还涵盖了VSCode的常用快捷键和字符串操作API的实践应用。
摘要由CSDN通过智能技术生成

常见的终端命令

命令及键盘按钮:node 某个js文件调用node程序运行某个js文件 clear 或者 cls清空界面

Ls 或者 dir 查看列表(list)  cd 目录名 进入到目录中去     cd .. 返回到上一级目录   

Cd \  直接返回到根目录     ctrl + c   停止node 程序   输入部分文件名后按下 tab 键 补全文件名 或目录名 多次tab会进行切换   ↑↓箭头 切换输入历史  

常用的 快捷键

Ctrl+A 功能:全部选中当前页面内容     Ctrl+F 功能:打开“查找”面版       Ctrl+N 功能:新建一个空白窗口(可更改,Maxthon选项→标签→新建)    Ctrl+R 功能:刷新当前页面   Ctrl+F4 功能:关闭当前标签(窗口)

常见的vscode快捷键

单词选中Shift + Alt + Up/Down   打开关闭侧边栏 Ctrl+ d   Ctrl+ b     复制行Ctrl + Shift + d  删除行Ctrl + x    跳转到特定行Ctrl + g

总结字符串操作的api 

返回在指定位置的字符:charAt()  返回在指定的位置的字符的 Unicode 编码:charCodeAt()   

连接字符串:concat()  提取字符串中两个指定的索引号之间的字符:substring()     ES新增at()方法可以识别Unicode 编号大于0xFFFF的字符,返回正确的字符。

案例

// 1.读取文件
const fs = require("fs");

const path = require("path");

fs.readFile(path.join(__dirname, "txt.md"), "utf8", (err, data) => {
    if (err) {
        console.log("err", err);
        return;
    }

    // console.log(data.toString());
    // 把字符串 用 \n 分割 分割成数组 
    const arr = data.split("\n"); // 因为 原本的md 文件就有\n 所以 用 \n进行分割
    //  定义空数组
    let bigStr = '';
    arr.forEach((item) => {
        //  startsWith 判断是以什么开头的
        if (item.startsWith("# ")) {
            console.log(item);
            const newStr = "<h1>" + item.replace("# ", "") + "</h1>";
            bigStr += newStr
        } else if (item.startsWith("##")) {
            const newStr = "<h2>" + item.replace("## ", "") + "</h2>";
            bigStr += newStr
        } else if (item.startsWith("###")) {
            const newStr = "<h3>" + item.replace("### ", "") + "</h3>";
            bigStr += newStr
        } else {
            const newStr = "<p>" + item + "</p>";
            bigStr += newStr
        }
    });

    // 写入
    fs.writeFile(path.join(__dirname, "md.html"), bigStr, 'utf8', function(err) {
        if (err) {
            console.log('err', err);
        }
    })
});

文档中的两个作业

01.读入数据,补充内容

const fs = require("fs");
const path = require("path");

fs.readFile(path.join(__dirname, "./data.json"), "utf8", (err, data) => {
    if (err) {
        console.log("err", err);
        return;
    }
    let test1 = JSON.parse(data);
    test1.push({ "name": "小张" });
    let str = JSON.stringify(test1)

    fs.writeFile(path.join(__dirname, "./data.json"), str, 'utf8', (err) => {
        if (err) {
            console.log(err, '添加失败');
        }
    })
});

02.整理数据,将a.txt的内容,转成b.json的内容。

最好的思路

const fs = require('fs')
const path = require('path')


fs.readFile(path.join(__dirname, 'a.txt'), 'utf8', function(err, data) {
    // console.log(data);
    let arr = data.split('\r\n', )


    // let newarr = arr.map(item => {
    //   return item.split(',')
    // });
    // console.log(newarr);


    let newarr = []
    arr.forEach(item => {
        let a = item.split(',')
        newarr.push(a)
    })
    console.log(newarr);
    let arr1 = []
    let sum = 0
    newarr.forEach(item => {
        sum += Number(item[1])
        let obj = {}
        obj["name"] = item[0]
        obj["age"] = +item[1]


        console.log(obj);
        arr1.push(obj)
    })
    console.log(arr1);
    let newobj = {}
    newobj["list"] = arr1
    newobj["average"] = sum / (newarr.length)
    newobj["total"] = newarr.length


    console.log(newobj);
    let a = JSON.stringify(newobj)
    console.log(a);
    fs.writeFile(path.join(__dirname, 'b.json'), a, function(err) {
        console.log(err);
    })
})

稍又一点BUG

const fs = require("fs");
const path = require("path");

let obj = {};
let allname = [];
let allage = [];

fs.readFile("./01.txt", "utf8", (err, data) => {
    if (err) {
        console.log("err", err);
        return;
    }
    let arr3 = [];
    // 将哪来的数据切换 并转化数组
    let arr = data.split("\r\n");

    arr.forEach((item) => {
        // 将数组都循环出来
        item.split(",").forEach((item) => {
            // 把里面的 逗号拿掉 在建立数组 再次循环
            arr3.push(item); // 再将选循环出来的东西再装进新的数组
        });
    });

    arr3.forEach((item) => {
        console.log(item);
        // console.log(Number(item).toString());
        // 将  name  和 age 分割出来
        // console.log(Number(item).toString());
        if (Number(item).toString().length > 2) {
            // console.log(Number(item).toString());
            // console.log(item);
            allname.push(item);
        } else {
            // console.log(item);
            allage.push(item);
        }
    });

    let allage1 = [];
    allage.forEach((item) => {
        allage1.push(Number(item));
        // console.log(Number(item));
    });
    let total = allname.length;
    let sum = 0;
    for (let i = 0; i < allage1.length; i++) {
        sum += allage1[i];
    }
    let average = sum / allname.length;
    let list = [];
    for (let i = 0; i < allname.length; i++) {
        list.push({ name: allname[i], age: allage1[i] });
    }
    obj.list = list;
    obj.average = average;
    obj.total = total;
    console.log(obj);
    fs.writeFile(path.join(__dirname + "/b.json"), JSON.stringify(obj), (err) => {
        console.log("err", err);
    });
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值