【记事本】-你懂个der-分割记事本

提示:【记事本】-你懂个der-分割记事本


前言

为了方便文件记事本分割麻烦产生的问题


提示:以下是本篇文章正文内容,下面案例可供参考

一、记事本是什么?

记事本是一种用于记录和保存文本信息的电子文档,它是一种简单的文本编辑工具,可以用来输入、编辑和保存文本信息。记事本通常不具备复杂的格式设置功能,只能实现基本的文本输入和保存操作。它在计算机上广泛应用,可以用来创建文本文件、编写程序代码、写日记等。

二、使用步骤

1.新建index.html文件

在这里插入图片描述

2.技术html/css/js

代码如下(示例):

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>分割记事本小网页</title>
  <style>
    body {
      background-color: #f7f7f7;
      font-family: Arial, sans-serif;
    }

    .container {
      max-width: 500px;
      margin: 0 auto;
      padding: 20px;
      background-color: #fff;
      border: 1px solid #ccc;
      border-radius: 4px;
      box-shadow: 10px 10px 10px #9a9c9e;
    }

    h2 {
      text-align: center;
    }
    
    h4 {
      text-align: center;
    }

    label {
      display: block;
      margin-bottom: 10px;
      font-size: 16px;
    }

    input[type='file'] {
      margin-bottom: 10px;
    }

    input {
      width: calc(100% - 10px);
    }

    button {
      display: block;
      width: 100%;
      padding: 10px;
      font-size: 16px;
      font-weight: bold;
      color: #fff;
      background-color: #007bff;
      border: none;
      border-radius: 4px;
      cursor: pointer;
      margin-top: 12px ;
    }

    #result {
      margin-top: 20px;
      padding: 10px;
      background-color: #f7f7f7;
      border: 1px solid #ccc;
      border-radius: 4px;
    }

    .info {
      text-align: center;
      margin-bottom: 10px;
    }

    .notebook-link {
      display: block;
      margin-bottom: 10px;
      font-size: 14px;
      color: #007bff;
      text-decoration: none;
      transition: color 0.3s;
    }

    .notebook-link:hover {
      color: #004cb3;
    }

    @media (max-width: 768px) {
      .container {
        max-width: 90%;
      }

      h1 {
        font-size: 20px;
      }

      label {
        font-size: 14px;
      }

      button {
        font-size: 14px;
      }

      .notebook-link {
        font-size: 14px;
      }
    }
    .spinner {
      margin: 20px auto;
      width: 50px;
      height: 50px;
      border-radius: 50%;
      border: 5px solid #f3f3f3;
      border-top: 5px solid #3498db;
      animation: spin 1s linear infinite;
    }

    @keyframes spin {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
  </style>
</head>
<body>
  <div class="container">
    <h2>记事本数据分割</h2>
    <h4>公众号:你懂个der</h4>

    <label for="fileInput">选择记事本文件:</label>
    <input type="file" id="fileInput" accept=".txt" />

    <label for="size">输入每个记事本的数据条数:</label>
    <input type="number" id="size" min="1" placeholder="按照多少条数据进行分解"/>

    <label for="notebookName">输入记事本名称:</label>
    <input type="text" id="notebookName" placeholder="记事本名称默认(notebook)" />

    <label for="zipName">输入压缩包文件名称:</label>
    <input type="text" id="zipName" placeholder="压缩包文件名称默认(all_notebooks)" />

    <button οnclick="splitNotebooks()">分割记事本</button>

    <div id="result"></div>
    <div id="loading" style="display: none">
      <h2>正在分割记事本,请稍候...</h2>
      <div class="spinner"></div>
    </div>
  </div>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.5.0/jszip.min.js"></script>
  <script>
    function splitNotebooks() {
      var fileInput = document.getElementById('fileInput');
      var file = fileInput.files[0];

      if (!file) {
        alert('请选择记事本文件');
        return;
      }

      var allowedExtensions = ['.txt'];
      var fileExtension = file.name.split('.').pop();

      if (!allowedExtensions.includes('.' + fileExtension)) {
        alert('请选择记事本文件(.txt)');
        return;
      }
      var resultEl = document.getElementById('result');
      resultEl.innerHTML = '';
      showLoading();
      var reader = new FileReader();
      reader.onload = function (e) {
        var content = e.target.result;

        let lines = content.split('\n');
        if (lines[0].trim() === '') {
          lines.shift();
        }
        if (lines[lines.length - 1].trim() === '') {
          lines.pop();
        }
        var size = Number(document.getElementById('size').value);
        if (size < 1) {
          alert('请输入每个记事本的数据条数');
          hideLoading();
          return;
        }
        var notebookCount = Math.ceil(lines.length / size);

        var infoEl = document.createElement('p');
        infoEl.className = 'info';
        infoEl.innerText =
          '一共解析了 ' + lines.length + ' 条数据,将数据分割成了 ' + notebookCount + ' 个记事本';
        resultEl.appendChild(infoEl);
        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var day = date.getDate();
        var time = year + '-' + month + '-' + day;
        var notebookName = document.getElementById('notebookName').value || 'notebook';
        let zipName = document.getElementById('zipName').value;
        if (zipName != null && zipName != '' && zipName != undefined) {
          zipName = zipName + '_' + lines.length + '_' + time + '.zip';
        } else {
          zipName = 'all_notebooks_' + '_' + lines.length + '_' + time + '.zip';
        }
        var num = lines.length - size * (notebookCount - 1);
        var zip = new JSZip();

        for (var i = 0; i < notebookCount; i++) {
          var notebookContent = lines.slice(i * size, (i + 1) * size).join('\n');

          zip.file(
            i + 1 + '_' + notebookName + '_' + (notebookCount == i + 1 ? num : size) + '.txt',
            notebookContent
          );
        }

        zip.generateAsync({ type: 'blob' }).then(function (content) {
          var downloadLink = document.createElement('a');
          var name = file.name.split('.').shift() || '记事本 '
          downloadLink.href = URL.createObjectURL(content);
          downloadLink.download = zipName;
          downloadLink.innerText = `下载${notebookCount}个x${size}条数据的压缩包(${name}.zip)`;
          downloadLink.className = 'notebook-link';
          resultEl.insertBefore(downloadLink, resultEl.firstChild);
          for (var i = 0; i < notebookCount; i++) {
            var notebookContent = lines.slice(i * size, (i + 1) * size).join('\n');

            var notebookLink = document.createElement('a');
            notebookLink.href = URL.createObjectURL(
              new Blob([notebookContent], { type: 'text/plain' })
            );
            notebookLink.download =
              i + 1 + '_' + notebookName + '_' + (notebookCount == i + 1 ? num : size) + '.txt';
            notebookLink.innerText = name + '_' + (i + 1);
            notebookLink.className = 'notebook-link';
            resultEl.appendChild(notebookLink);
          }

          hideLoading();
        });
      };
      reader.readAsText(file);
    }

    function showLoading() {
      var loadingEl = document.getElementById('loading');
      loadingEl.style.display = 'block';
    }

    function hideLoading() {
      var loadingEl = document.getElementById('loading');
      loadingEl.style.display = 'none';
    }
  </script>
</body>
</html>

总结

这段HTML代码实现了一个简单的记事本分割小工具,通过用户在网页上选择记事本文件并输入相关参数后,可以将记事本内容按照指定的数据条数进行分割,并生成一个可以下载的压缩包文件,同时还提供每个分割后记事本的下载链接。网页的样式简洁清晰,功能实用,可以方便地进行记事本的分割和管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你懂个der

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值