如何使用Javascript获取多行文本框中的行号

3

我正在开发基于asp.net的应用程序。我正在使用多行文本框,并在asp.net中使用JavaScript。我想要找到多行文本框中特定字符或文本的行号。如何使用JavaScript从多行文本框获取行号?


如果您需要,我可以用Jquery给您提供这个。 - user1006544
你有关于 JavaScript 的任何想法吗? - Praveen Kumar
@Praveen:刚刚编辑了我的回答,加入了JS的方法。 - Tim Schmelter
3个回答

1
你可以使用以下方式在C#代码中实现此操作。
yourInputString
// Get the text before your particular text
.Substring(0, yourInputString.IndexOf("ParticularText"))
// Get all lines
.Split('\n')
.Length

更新: 正如您在评论中提到的,您想在JavaScript中完成此操作,以下是代码:

textBoxName.Value
// Get the text before your particular text
.substring(0, textBoxName.Value.indexOf("ParticularText"))
// Get all lines
.split('\n')
.length

我该如何将这个添加到 JavaScript 中? - Praveen Kumar
你在问题中没有提到 JavaScript? - Maheep

1
string[] lines = Textbox1.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
int lineNumberOfText = -1;
for (int lineNumber = 0; lineNumber <= lines.Length - 1; lineNumber++) {
    if (lines(lineNumber).Contains(textToSearch)) {
        lineNumberOfText = lineNumber;
        break; 
    }
}

编辑:您刚刚将标题从ASP.NET更改为JavaScript,因此此答案不正确,但仍可能有所帮助。

这是一个JavaScript函数,它可以实现您想要的功能(包括不区分大小写搜索的选项):

function getLineNumber(id, text, caseSensitive) {
    var input = document.getElementById(id);
    if (input != null) {
        caseSensitive = (caseSensitive == true || caseSensitive == "true") ? true : false;
        if (!caseSensitive) text = text.toLowerCase();
        var lines = input.value.split('\n');
        for (var i = 0; i < lines.length; i++) {
            var line = caseSensitive ? lines[i] : lines[i].toLowerCase();
            if (line.indexOf(text) != -1) {
                return i;
            }
        }
    }
    return -1;
}

以下代码将打印出第一行包含“Hello World”(不区分大小写)的行号:alert(getLineNumber('Textarea1','Hello World',false)) - Tim Schmelter

0

Praveen,我在这里尝试了一些关于HTML的东西http://jsfiddle.net/amantur/Uk6td/2/。但它并不是万无一失的。因为如果你有50个字符排成一行(就像我们的例子),但一个单词超过50个字符,它会破坏所有逻辑。而且,如果一个单词不能放在一行中,它会移到下一行,列索引也会被打破。它会给你关于行的大致想法,但在第一行之后的列方面非常错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接