1

我想从我的文本区域中获取文本,放入一个变量,将所有换行符(\n\r)更改为“@@”。
由于某种原因,它不起作用。

请帮忙,这是一个小提琴:http: //jsfiddle.net/HK82q/

$("#go").click(function(){
 curtext = $("textarea").val();
 curtext = curtext.replace("\n\r\n","@@");
 alert(curtext);
});
4

2 回答 2

3

“换行符”可能意味着以下三件事之一:

  • \r(回车),旧 Mac 电脑使用
  • \n(换行),Linux、Unix 使用,我认为是新的 Mac
  • \r\n(CRLF),由 Windows 使用

因此,您需要处理所有三种情况。这可以通过多次.replace调用或正则表达式来完成:

curtext = curtext.replace(/(?=[\r\n])\r?\n?/g,"@@");

这个正则表达式首先断言前面有一个 CR 或 LF,然后有选择地匹配它们以允许所有三个选项。断言确保“无”不匹配。

于 2013-11-05T12:07:36.893 回答
1

您期望遇到一个\n紧随其后的\r. 这是错的。您应该期待其中之一。然后,replace函数的正则表达式应该用/not with括起来"。它不是一个字符串。最后一件事 - 添加g修饰符(代表全局 - 将替换所有出现,而不仅仅是第一个)。

curtext = curtext.replace(/[\n\r]/g,"@@");

这是更新的小提琴:http: //jsfiddle.net/HK82q/1/

于 2013-11-05T12:06:36.127 回答