基于Javascript中的换行符解析子字符串中的文本区域

Posted

技术标签:

【中文标题】基于Javascript中的换行符解析子字符串中的文本区域【英文标题】:parse a textarea in substrings based on line breaks in Javascript 【发布时间】:2011-04-17 13:54:22 【问题描述】:

我有一个需要解析的文本区域。每条新线都需要拔出,并需要对其进行操作。操作完成后,需要在下一行运行操作。这就是我目前所拥有的。我知道 indexOf 搜索不起作用,因为它正在逐个字符地搜索。

function  convertLines()

trueinput = document.getElementById(8).value;  //get users input
length = trueinput.length; //getting the length of the user input
newinput=trueinput;  //I know this looks silly but I'm using all of this later
userinput=newinput;
multiplelines=false; //this is a check to see if I should use the if statement later
    for (var i = 0; i < length; i++) //loop threw each char in user input
        
            teste=newinput.charAt(i); //gets the char at position i
            if (teste.indexOf("<br />") != -1) //checks if the char is the same
                
//line break is found parse it out and run operation on it
                    userinput = newinput.substring(0,i+1);
                    submitinput(userinput); 
                    newinput=newinput.substring(i+1);
                    multiplelines=true;
                   
        
    if (multiplelines==false)
        submitinput(userinput);

因此,在大多数情况下,它正在接受用户输入。如果它有多行,它将运行抛出每一行并单独运行提交输入。如果你们能帮助我,我将永远感激不尽。有什么问题请追问

【问题讨论】:

【参考方案1】:

文本区域的value 中的换行符由换行符(大多数浏览器中的\r\n,IE 和Opera 中的\n)而不是html &lt;br&gt; 元素表示,因此您可以获取单个通过将换行符标准化为\n,然后在文本区域的值上调用split() 方法来换行。这是一个实用函数,它为 textarea 值的每一行调用一个函数:

function actOnEachLine(textarea, func) 
    var lines = textarea.value.replace(/\r\n/g, "\n").split("\n");
    var newLines, i;

    // Use the map() method of Array where available 
    if (typeof lines.map != "undefined") 
        newLines = lines.map(func);
     else 
        newLines = [];
        i = lines.length;
        while (i--) 
            newLines[i] = func(lines[i]);
        
    
    textarea.value = newLines.join("\r\n");


var textarea = document.getElementById("your_textarea");
actOnEachLine(textarea, function(line) 
    return "[START]" + line + "[END]";
);

【讨论】:

【参考方案2】:

如果用户使用回车键转到您可以编写的文本区域中的下一行,

var textAreaString = textarea.value;
textAreaString = textAreaString.replace(/\n\r/g,"<br />");
textAreaString = textAreaString.replace(/\n/g,"<br />");

textarea.value = textAreaString;

【讨论】:

以上是关于基于Javascript中的换行符解析子字符串中的文本区域的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 中的 DOM 解析

有没有办法删除数组中字符串中的换行符?

基于字符串的命令ubuntu

使用 Javascript 从 Textarea 中的每个换行符添加数字

如何检查字符串是不是包含 JavaScript 中的子字符串?

如何检查字符串是不是包含 JavaScript 中的子字符串?