使用 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'); }
最初,这始于我尝试解析通过输入字段上传的文本文件,但我研究的所有内容都得出 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'); }