我想替换文本区域中的空格和换行符, 如果输入是
________________________________________
i am a
fat
boy zzz
________________________________________
结果应该是
i<sp>am<sp>a<br>fat<br><br>boy<sp>zzz
其中空格被 <sp>
替换并将换行符替换为 <br>
.
空间替换成功,
但当我尝试用 <br>
替换新行时失败了(我尝试了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('<'+"sp"+'>');
document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html>
最佳答案
我不会使用split
和join
对于这一点,直接更换即可。请注意,不同的操作系统(甚至同一操作系统上的不同浏览器)使用不同的换行符,因此为了覆盖您的基础,您可能需要进行替换:
str = str.replace(/(?:\r|\n|\r\n)/g, '<br>');
这将取代每个独立的 \r
,一个独立的\n
,或 \r\n
彼此相邻 <br>
.
当然,我们将其与 .replace(/ /g, '<sp>')
结合起来。做空格:
str = str.replace(/ /g, '<sp>').replace(/(?:\r|\n|\r\n)/g, '<br>');
免费的实例:
var originals = [
"i am a\nfat\n\nboy zzz",
"i am a\rfat\r\rboy zzz",
"i am a\r\nfat\r\n\r\nboy zzz"
];
originals.forEach(function(str) {
str = str.replace(/ /g, '<sp>').replace(/(?:\r|\n|\r\n)/g, '<br>');
snippet.log(str);
});
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
如果它是一个非常大的字符串,那么两次遍历它(两次调用 replace
)可能并不理想。在这种不太可能的情况下,我们可以将事物组合成一个 replace
使用回调函数:
str = str.replace(/(?: |\r|\n|\r\n)/g, function(m) {
return m === " " ? "<sp>" : "<br>";
});
实例:
var originals = [
"i am a\nfat\n\nboy zzz",
"i am a\rfat\r\rboy zzz",
"i am a\r\nfat\r\n\r\nboy zzz"
];
originals.forEach(function(str) {
str = str.replace(/(?: |\r|\n|\r\n)/g, function(m) {
return m === " " ? "<sp>" : "<br>";
});
snippet.log(str);
});
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
但在正常情况下,字符串大小合理,需要两次调用 replace
直接替换可能比使用回调函数的单个调用更好。
关于javascript - 如何替换文本区域中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080989/