如果我有以下字符串:
hello
goodbye
我可以将该字符串设置为div的内容但保留回车符吗?
jQuery('<div class="myTooltip">').text(theString);
Atm,。text()返回:
hello<br> <br> <br> <br> goodbye
由于跨侧脚本问题,我无法使用.html()。
我可以在字符串上使用一些正则表达式来保持carraige返回不被转换为文本吗?
如果不是正则表达式,还有其他选择吗?
答案 0 :(得分:4)
您可以使用替换将'\n'
或'\n\r'
字符转换为'<br />'
这是一个例子:
var myString = 'some text \n';
var parsed= myString.replace(/\n\r?/g, '<br />');
console.log(parsed);
这里有完整的工作示例: http://jsfiddle.net/r6xrf5wh/1/
只需检查&#34;红色框&#34;查看在输入栏中使用换行符时自动插入的内容。
<!DOCTYPE html>
<html>
<head>
<style>
#result {
width: 200px;
height: 200px;
background-color: red;
}
</style>
<script>
window.parse = function() {
var elm = document.getElementById('test');
var elmText = elm.value;
var parsed= elmText.replace(/\n\r?/g, '<br />');
var elmResult = document.getElementById('result');
elmResult.innerHTML = parsed;
};
</script>
</head>
<body>
<textarea id="test" rows="4" cols="50"></textarea>
<button type="button" onclick="parse()">Click Me!</button>
<div id="result">x</div>
</body>
</html>
答案 1 :(得分:1)
在大多数情况下都适用的脚本。它是我前一段时间写的,因为正则表达式替换(/ \ n \ r?/ g,&#39;&#39;)并不总是有效,我还需要摆脱carrige返回:)
function (str) {
var cleanStr = "";
if(str!=null && str!=""){
for(var i=0; i< str.length; i++){
if(!str[i].charCodeAt(0) == 10 && !str[i].charCodeAt(0) == 13){
cleanStr+=str[i];
}
}
}
return cleanStr;
}
希望有所帮助:)
答案 2 :(得分:1)
你可以使用CSS:
$('<div class="myTooltip" style="white-space: pre-line;"></div>').text(theString);