为了账号安全,请及时绑定邮箱和手机立即绑定

为txt文件生成标题

为txt文件生成标题

犯罪嫌疑人X 2021-06-08 08:34:58
我正在为给定文件生成一个默认标头,我希望发件人 ID 有 4 个字符,发件人名称有 45 个字符。如果它们分别小于 4 和 45,我需要输入空格才能有 4 或 45 个字符。我怎样才能做到这一点?在下图中,您可以看到我做空白文件时没有填写必要的空格。即使我在发件人 ID 或发件人姓名上写了一些东西,也不会添加任何内容。我究竟做错了什么?function download(fileName, text) {    let element = document.createElement('a');    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));    element.setAttribute('download', fileName);    element.style.display = 'none';    document.body.appendChild(element);    element.click();    document.body.removeChild(element);}document.getElementById("generate").addEventListener("click", function(){        // Generate .txt file header        //force 4 chars    let id = document.getElementById("senderID");    if (id.textContent.length < 4) {            id.textContent += ' ';    }            //force 45 chars    let name = document.getElementById("senderName");    if (name.textContent.length < 45) {        name.textContent += ' ';    }        let header = "HDRPB" + id.textContent + name + "01.10";    let body = document.getElementById("fileContents").textContent;            let text = header;        let fileName = document.getElementById("fileName").value + ".txt";        download(fileName, text);}, false);<!DOCTYPE html><html>  <head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">    <link rel="stylesheet" href="css/site.css">    <title>Generator</title>  </head>  <body>    <div class="container">      <div class="row">        <div class="col-2 p-0 mt-2">          <label for="senderID" class="font-weight-bold">Sender ID:</label>          <input id="senderID" type="text" maxlength="4" size="4"/>        </div>        <div class="col-6 p-0 mt-2">          <label for="senderName" class="font-weight-bold">Sender Name:</label>          <input id="senderName" type="text" maxlength="45" size="45"/>        </div>      </div>
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

考虑以下代码:


function genId(seed) {

  var result = new Array(4);

  for (var i = 0; i < 4; i++) {

    result[i] = seed[i] || "&nbsp;";

  }

  return result.join("");

}


function genName(seed) {

  var result = new Array(45);

  for (var c = 0; c < 45; c++) {

    result[c] = seed[c] || "&nbsp;";

  }

  return result.join("");

}


document.getElementById("genHead").addEventListener("click", function() {

  var i = document.getElementById("hid").value;

  var n = document.getElementById("hname").value;

  var header = genId(i) + genName(n);

  document.getElementById("results").innerHTML = header;

});

#results {

  font-family: monospace;

  border: 1px solid #ccc;

  display: inline-block;

}

<p>ID: <input type="text" id="hid" /></p>

<p>Name: <input type="" id="hname" /></p>

<button id="genHead">Generate Header</button>

<div id="results"></div>

在这个例子中,我创建了一个特定数量字符的数组。无论如何,字符串都被认为是一个字符数组。我$nbsp;用来表示 HTML 中的空格,但您可以使用' '或" "。


总会有结果,因为result[c] = seed[c] || "&nbsp;";如果seed那个位置有字符,就会result在同一个位置输入。否则它将进入 No Break Space 或您想要的字符。


你也可以这样做:


function formatText(t, n, c) {

  if(t == undefined){

    return "";

  }

  if(n == undefined){

    n = 45;

  }

  if(c == undefined){

    c = " ";

  }

  var r = new Array(n);

  for (var i = 0; i < n; i++) {

    r[i] = t[i] || c;

  }

  return r.join("");

}

然后像这样使用:


var i = formatText("12", 4, " ");

var n = formatText("test", 45, " ");

希望这可以帮助。


查看完整回答
反对 回复 2021-06-11
  • 1 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信