javascript获取到textarea文本框中的回车换行符

作者:王先荣

结论

    javascript获取到textarea文本框中的字符串中,如果包含有回车换行符,在字符串中表现为“\n”,而不是我们通常所见的“\r\n”。

发现问题

    今天在做小网站的时候,需要将用户输入的英文分号、中英文逗号及回车都替换成中文分号,在编javascript函数的过程中,总是无法正确的替换回车。

例如:用户在textarea中输入:

测试字符串1

测试字符串2

我们将textarea中的输入字符串保存到变量content中,下面的替换语句不会将回车替换成中文分号。

content = content.replace("\r\n",";");

解决问题

    通过google大法(在google中搜索关键字“javascript substr \r\n”),找到了Ben先生的文章《Ask Ben: Javascript Replace And Multiple Lines / Line Breaks》,里面有非常详细的解释。

拓展

    如果我们要获取用户在textarea中输入的回车位置,需要使用类似下面的代码:

var pos = content.indexOf("\n");

    如果我们需要将回车替换为别的字符,例如分号,需要使用类似下面的代码:

content = content.replace("\n",";");

完整代码

    本文的完整代码如下所示:

        //用中文分号替换英文分号、中英文逗号或者回车
        function ReplaceSeperator(mobiles) {
            var i;
            var result = "";
            var c;
            for (i = 0; i < mobiles.length; i++) {
                c = mobiles.substr(i, 1);
                if (c == ";" || c == "," || c == "," || c == "\n")
                    result = result + ";";
                else if (c != "\r")
                    result = result + c;
            }
            return result;
        }

posted @ 2011-04-27 22:46 Wuya 阅读(1399) 评论(2) 编辑 收藏

 回复 引用 查看   
#1楼 2011-04-28 22:47 sohighthesky      
content = content.replace(/\r\n/g,";");//你那个只能替换字符串中的第 一个,貌似你在循环?用这个直接一次就搞定了。。
 回复 引用 查看   
#2楼[楼主] 2011-04-29 08:57 Wuya      
@sohighthesky
我知道使用正则表达式才能将字符串中所有的都替换掉。
文中那行代码是为了看起来简便,容易理解而写的。
实际上,因为“需要将用户输入的英文分号、中英文逗号及回车都替换成中文分号”,我用循环来逐个替换。比用正则表达式更加快。
晚上回家再将循环部分的代码补上。