使用匹配关键字存储 JavaScript 中所有特定字符出现的行号
Storing the line number of all the occurrence of particular character in JavaScript using match keyword
我正在关注 link ,它存储数组中所有出现的“{”的行号,但仅当用户在文本区域中键入时,即在按键时。如果我们直接将内容粘贴到 textarea 中是行不通的。
所以我使用 onchange 和 match 关键字来查找行号并将其存储在数组中。
文本区域内容为:
Hello {
The next match here line number {
Bla Bla
blah bla
blah blah
The next match here line number {
end textarea
期望的输出是:1 2 6
但输出显示的是最后一个数字:7
请通过给出正确的解决方案来告诉我这段代码有什么问题。我不想使用 jquery.
var arr = [];
var c = 0;
function hello() {
var str = document.getElementById('editor').value;
if (str.match(/{/)) {
arr[c++] = getLineNumber();
}
document.getElementById("lineNo").innerHTML =
"Array content is... " + arr.join(' ');
}
function getLineNumber() {
var ta = document.getElementById("editor")
var x = ta.value.substr(0, ta.selectionStart).split("\n").length;
return x;
}
<textarea rows="30" cols="100" id="editor" onchange="hello();"></textarea>
<div id="lineNo"></div>
您可以通过按换行符拆分并在每行中找到 {
的出现来做到这一点。
var arr = [];
var c = 0;
function hello() {
var str=document.getElementById('editor').value;
lines = str.split(/\r?\n/);
lines.forEach((line,index) => {
if (line.match(/{/)) {
arr[c++] = index;
}
})
document.getElementById("lineNo").innerHTML=
"Array content is... "+ arr.join(' ');
}
<textarea rows="30" cols="100" id="editor" oninput="hello();" ></textarea>
<div id="lineNo"></div>
我正在关注 link
文本区域内容为:
Hello {
The next match here line number {
Bla Bla
blah bla
blah blah
The next match here line number {
end textarea
期望的输出是:1 2 6
但输出显示的是最后一个数字:7
请通过给出正确的解决方案来告诉我这段代码有什么问题。我不想使用 jquery.
var arr = [];
var c = 0;
function hello() {
var str = document.getElementById('editor').value;
if (str.match(/{/)) {
arr[c++] = getLineNumber();
}
document.getElementById("lineNo").innerHTML =
"Array content is... " + arr.join(' ');
}
function getLineNumber() {
var ta = document.getElementById("editor")
var x = ta.value.substr(0, ta.selectionStart).split("\n").length;
return x;
}
<textarea rows="30" cols="100" id="editor" onchange="hello();"></textarea>
<div id="lineNo"></div>
您可以通过按换行符拆分并在每行中找到 {
的出现来做到这一点。
var arr = [];
var c = 0;
function hello() {
var str=document.getElementById('editor').value;
lines = str.split(/\r?\n/);
lines.forEach((line,index) => {
if (line.match(/{/)) {
arr[c++] = index;
}
})
document.getElementById("lineNo").innerHTML=
"Array content is... "+ arr.join(' ');
}
<textarea rows="30" cols="100" id="editor" oninput="hello();" ></textarea>
<div id="lineNo"></div>