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

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

本文关键字:subsr 文本区 另一个 区域 Javascript 一个 使用 文本 逐行      更新时间:2023-09-26

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

我粘贴的数据如下:

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'); }