gpt4 book ai didi

javascript - 如何在 javascript 中删除 "\n"后面没有另一个 "\n"

转载 作者:行者123 更新时间:2023-11-28 15:43:35 31 4
gpt4 key购买 nike

我想删除后面没有另一个“\n”的“\n”。

我这里有一个示例文本。我想要做的是,当我按下按钮时,我想从 textarea HTML 标记中的下面的文本中删除“\n”而不是后跟另一个“\n”。

abcdefg

hijklmn
opqrstu
vwxyz

12345
67890
abcde

zzzzz

所以,我期望的结果是这样的。它仅删除“\n”,后面不跟另一个“\n”。

abcdefg

hijklmnopqrstuvwxyz

1234567890abcde

zzzzz

但我实际得到的结果是这样的。

abcdefghijklmnopqrstuvwxyz1234567890abcde

zzzzz

这是我现在拥有的 javascript 代码和 HTML 代码。

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="remove-line-breaks.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<h1>remove-line-breaks</h1>

<h2>Before</h2>
<textarea id="original-textarea" cols="30" rows="15">
abcdefg

hijklmn
opqrstu
vwxyz

12345
67890
abcde

zzzzz
</textarea>
<br />
<input id ="modify-text-btn" type="submit" value="change" />


<h2>after</h2>
<textarea id="modified-textarea" cols="30" rows="15"></textarea>

</body>
</html>

Javascript

window.onload = function(){

var modifyTextBtn = document.getElementById("modify-text-btn");
modifyTextBtn.addEventListener("click", modifyText, false);

var originalTextarea = document.getElementById("original-textarea");
var modifiedTextarea = document.getElementById("modified-textarea");

function modifyText(){

var pattern = new RegExp("[^\\n](\\n)[^\\n]");
var newStr = originalTextarea.value;

while (pattern.test(newStr)) {
newStr = newStr.replace(pattern.exec(newStr)[1], "");
}

modifiedTextarea.value = newStr;

}




}

谁能帮我解决这个问题吗?

最佳答案

或多或少,您所做的处理比您需要的要多得多。将您的 modifyText 函数更改为:

function modifyText(){
var pattern = new RegExp("([^\\n])\\n([^\\n])", "g");
modifiedTextarea.value = originalTextarea.value.replace(pattern, "$1$2");
}

第一个更改是 pattern 的定义。 。 。您注意到最后,我在 new RegExp 构造函数中添加了 , "g"。这使得该模式成为全局模式,这意味着,当应用该模式时,它将影响该模式的所有实例

设置完成后,您所要做的就是对字段值调用一次替换并将其分配给目标字段值。

<小时/>

更新:抱歉删除了这些字符。 :D 我已经更新了正则表达式和替换模式。

正则表达式现在仅实际捕获换行符周围的字符,然后在替换中将它们放回原处,而它们之间没有换行符。

关于javascript - 如何在 javascript 中删除 "\n"后面没有另一个 "\n",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23088213/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com