Javascript 如何替换文本区域中的换行符

Javascript 如何替换文本区域中的换行符,javascript,html,Javascript,Html,我想替换文本区域中的空格和换行符, 如果输入是 ________________________________________ i am a fat boy zzz ________________________________________ 结果应该是 i<sp>am<sp>a<br>fat<br><br>boy<sp>zzz iamafatboyzz 其中空格替换为,换行符替换为 空间置换成功, 但当我尝

我想替换文本区域中的空格和换行符, 如果输入是

________________________________________
i am a 
fat

boy zzz
________________________________________
结果应该是

i<sp>am<sp>a<br>fat<br><br>boy<sp>zzz
iama
fat

boyzz
其中空格替换为
,换行符替换为

空间置换成功, 但当我尝试用

替换新行时失败了(我尝试了3-4种不同的方法,但没有一种能成功)

如果有人知道,我会很感激的?提前谢谢

代码如下

<!DOCTYPE html>
<html>
<body>

<textarea id="txtArea" rows="10" cols="70">i am fat boy </textarea>

<input type="text" id="StringTextBox" value="" >

<p id="demo"> </p>

<button onclick="myFunction()">Try it</button>

<script>

function myFunction() {
    var str = document.getElementById("txtArea").value; 

  var res = str.split(' ').join('&lt'+"sp"+'&gt');

    document.getElementById("demo").innerHTML = res;

}
</script>

</body>
</html>

我是个胖男孩

试试看 函数myFunction(){ var str=document.getElementById(“txtArea”).value; var res=str.split('').join('<'+“sp”+'>'); document.getElementById(“demo”).innerHTML=res; }
通过将函数作为第二个参数传递,您可以一次性完成此操作

var str = 'foo bar\nbaz';

str = str.replace(/(\r\n|\n)|(\s)/g, function ($0, $1, $2) {
    return ($2 && '&lt;sp&gt;') || '&lt;br&gt;'
});
// "foo&lt;sp&gt;bar&lt;br&gt;baz"

我根本不会使用
split
join
进行此操作,只需直接替换即可。请注意,不同的操作系统(甚至同一操作系统上的不同浏览器)使用不同的字符换行,因此,为了涵盖您的基本情况,您可能需要一种替代:

str = str.replace(/(?:\r|\n|\r\n)/g, '<br>');
免费现场示例:

var-originals=[
“我是一个\nfat\n\nboy zzz”,
“我是一个\rfat\r\rboy zzz”,
“我是一个\r\n法特\r\n\r\n男孩zzz”
];
原件。forEach(函数(str){
str=str.replace(//g',).replace(//(?:\r |\n |\r\n)/g,“
”); log(str); });
应在键入时替换:)

[].forEach.call(document.getElementsByTagName(“textarea”),函数(textarea){
addEventListener(“输入”,函数(){
textarea.value=textarea.value.replace(//\n/g,“
”)。replace(//g,”); }); });
你应该付出你所尝试的。请注意,根据操作系统的不同,有不同的换行符。(\r\n,…)str.replace(/(\S)/g,“”)的可能重复。replace(/(\r\n |\n |\r)/g,“
”)我很肯定老师会对这个有疑问;)“键入时应替换”使文本区域实际上无法使用,因为它会不断重置插入点位置。哦,绝对如此,但我不认为这是一个实际问题。虽然答案不错,但会使我的答案变得多余,(而且真的不太好),因此我将其删除:)
str = str.replace(/ /g, '<sp>').replace(/(?:\r|\n|\r\n)/g, '<br>');