【问题标题】:How to get line number in multi-line textbox using Javascript如何使用Javascript获取多行文本框中的行号
【发布时间】:2012-01-24 08:58:07
【问题描述】:

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

【问题讨论】:

  • 如果你愿意,我可以在 Jquery 中给你这个
  • 你对java脚本有什么想法吗?
  • @Praveen:刚刚编辑 my answer 以添加 js-way。

标签: javascript asp.net asp.net-mvc-3


【解决方案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))
【解决方案2】:

您可以在 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

【讨论】:

  • 如何将它添加到 java 脚本中?
  • 你没有提到有问题的javascript?
【解决方案3】:

Praveen,我在 http://jsfiddle.net/amantur/Uk6td/2/ 上尝试过 HTML。但这并不是万无一失的。因为如果您连续有 50 个字符(就像我们在示例中一样),但一个单词的长度超过 50 个字符,它将破坏所有逻辑。此外,如果一个单词不适合一行,它会移动到下一行和列索引中断。它会给你关于行的粗略概念,但在第一行之后的列的情况下是非常错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多