使用 Javascript 从一个文本区域行 line.substr(0,6) 解析到另一个文本区域

Parsing from one textarea line by line.substr(0,6) into another text area using Javascript

最初,这始于我尝试解析通过输入字段上传的文本文件,但我研究的所有内容都得出 HTML5,我不想使用它。所以然后我切换到只将文本粘贴到文本区域(输入)并让 Javascript 解析它,抓取前 16 个字符放置在文本区域(输出 1)中,并抓取前 6 个字符放置在文本区域(输出 2)中。 当我这样做时,它只解析第一行。我相信这可以通过循环来完成,但我还没有完全掌握循环。

我粘贴的数据是这样的:

A2C6F8-008CFF294
C4F2D1-008CAB312

因此在这些示例中,output1 应该有前六行,而 output2 应该有整行。

这是我的代码。不确定下一步是什么。

function trimit() {
    var str = "";
    str = document.getElementById("input").value;
    var six = str.substr(0,6);
    var sixteen = str.substr(0,16);
    document.getElementById("output1").value = six;
    document.getElementById("output2").value = sixteen; }

<table>
        <tr>
          <td><div align="center"><textarea name="input" cols="25" rows="10" id="input" onchange="trimit();"></textarea></div></td>
          <td><div align="center"><textarea name="output1" cols="7" rows="10" id="output1"></textarea></div></td>
          <td><div align="center"><textarea name="output2" cols="20" rows="10" id="output2"></textarea></div></td>
        </tr>
</table>

我意识到我的 javascript 中存在冗余。当我进行故障排除以确保我不会遗漏任何内容时,我倾向于这样做。解决这个问题后,我将采用相同的输入,substr 6 个字符,然后将所有换行符更改为逗号,以便我可以将其提交给数据库查询。

这是我第一次在这里发帖,所以如果我错过了您想要的内容,我深表歉意。我已经阅读了数以千计的 SO 问题,应该知道该放什么了。

更新:我本来想添加一张图片,但显然我还不配,所以这里是一个 ASCII 模型。

+---------INPUT---------+   +-----OUTPUT1-----+   +-------OUTPUT2-------+
| A2C6F8-008CFF294      |   | A2C6F8          |   | A2C6F8-008CFF294    |
| C4F2D1-008CAB312      |   | C4F2D1          |   | C4F2D1-008CAB312    |
|                       |-->|                 |-->|                     |
|                       |   |                 |   |                     |
|                       |   |                 |   |                     |
+-----------------------+   +-----------------+   +---------------------+

如果我没理解错的话,您希望每个输入行的前 16 个字符显示在一个输出框中,而在另一个输出框中仅显示该行的前 6 个字符。

你可以使用正则表达式,得到你想要的。所以,先举例说明:

"A2C6F8-008CFF294\nC4F2D1-008CAB312".match(/^....../mg) // match first 6 of each line
      ==> ["A2C6F8", "C4F2D1"]
"A2C6F8-008CFF294\nC4F2D1-008CAB312".match(/^................/mg) // match first 16 of each line
      ==> ["A2C6F8-008CFF294", "C4F2D1-008CAB312"]

所以你的函数是:

function trimit() {
    var str = "";
    str = document.getElementById("input").value;  
    var sixes = str.match(/^....../mg);
    var sixteens = str.match(/^................/mg);  
    document.getElementById("output1").value = sixes.join('\n');
    document.getElementById("output2").value = sixteen.join('\n'); }