在js取textarea的时候:
如果用
var
str
=
document.getElementById(
"
textarea
"
).value;
str = str.replace( " \r\n " , " <br> " );
则只会将第一个\r\n替换成<br>,如何将所有n个\r\n替换成<br>呢?难道要无限个replace吗?
str = str.replace( " \r\n " , " <br> " );
其实不用,replace可以和正则表达式结合,一次替换所有的\r\n。
var
reg
=
new
RegExp(
"
\r\n
"
,
"
g
"
);
str = str.replace(reg, " \r\n " );
这样str中所有的\r\n就替换成<br>了.然后可以将其存入数据库。
str = str.replace(reg, " \r\n " );
在取出的时候 只用将值在替换回来即可
var
reg
=
new
RegExp(
"
<br>
"
,
"
g
"
);
stt = str.replace(reg, " \r\n " );
document.getElementById( " textarea " ).value = str;
stt = str.replace(reg, " \r\n " );
document.getElementById( " textarea " ).value = str;
更加详细的分析和应用可以参考 JavaScript的replace方法与正则表达式结合应用讲解
下面是我写的2个函数 直接放到通用包中 以后使用可以替换
function
replaceTextarea1(str)
{
var reg=new RegExp("\r\n","g");
var reg1=new RegExp(" ","g");
str = str.replace(reg,"<br>");
str = str.replace(reg1,"<p>");
return str;
}
function replaceTextarea2(str) {
var reg=new RegExp("<br>","g");
var reg1=new RegExp("<p>","g");
str = str.replace(reg,"\r\n");
str = str.replace(reg1," ");
return str;
}
var reg=new RegExp("\r\n","g");
var reg1=new RegExp(" ","g");
str = str.replace(reg,"<br>");
str = str.replace(reg1,"<p>");
return str;
}
function replaceTextarea2(str) {
var reg=new RegExp("<br>","g");
var reg1=new RegExp("<p>","g");
str = str.replace(reg,"\r\n");
str = str.replace(reg1," ");
return str;
}
二:在div中使用<pre>标签正确显示出来
w3c对pre元素是这样定义的:pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。
更详细的内容请参考 http://www.w3school.com.cn/tags/tag_pre.asp
也就是说包含在pre标签中的回车和空格会正常的显示出来。包括你在页面代码中输入的。所以如果使用pre元素你需要这样写:
更详细的内容请参考 http://www.w3school.com.cn/tags/tag_pre.asp
也就是说包含在pre标签中的回车和空格会正常的显示出来。包括你在页面代码中输入的。所以如果使用pre元素你需要这样写:
<
pre
>要输出的文本
</
pre
>
,而不是这样:
<
pre
>
要输出的文本
</ pre >
后一种写法 文本前的空白也会被显示的。除非你真的希望这样
要输出的文本
</ pre >
三:div标签设置为可编辑并且自动换行
word-break:break-all
和
word-wrap:break-word
都是能使其容器如DIV的内容
自动换行