【问题标题】:Remove the last "\n" from a textarea从文本区域中删除最后一个“\n”
【发布时间】:2011-03-06 07:26:59
【问题描述】:

如何从文本区域中删除最后一个“\n”?

【问题讨论】:

  • 只是为了确认...您实际上是指换行符中的“\n”而不是“/n”吗?

标签: javascript newline


【解决方案1】:

仅删除最后一个换行符 (\n):

verses1 = "1\n222\n"
verses1.replace(/\n$/, "")
// "1\n222"

verses2 = "1\n222\n\n"
verses2.replace(/\n$/, "")
// "1\n222\n"

仅所有最后的换行符 (\n):

verses = "1\n222\n\n"
verses.replace(/\n+$/, "")
// "1\n222"

https://regexr.com/4uu1r

【讨论】:

  • 我最喜欢这个。例如,在stdout 的流中,它会对性能产生巨大影响。但是在这种情况下没有办法......
  • 这是✅答案。
【解决方案2】:

来自http://en.wikipedia.org/wiki/Trim_%28programming%29

String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g, "");
};

这将为字符串变量添加一个修剪函数,该函数将删除字符串开头和结尾的空格。

有了这个,你可以做这样的事情:

var mystr = "this is my string   "; // including newlines
mystr = mystr.trim();

【讨论】:

  • 如果@lam3r4370 只想替换一个尾随\n 字符,请将上面的/^\s+|\s+$/g 替换为/\n$/。此外,如果您计划分发此代码或将其放置在可能与其他用户的 JS 共享空间的地方,我建议您只创建一个通用函数 trim 而不是使用 String.prototype。虽然这是很常见的做法,但您可以通过向核心 JS 对象添加方法来给其他人带来麻烦。
  • @Andrew,你的方式改变了光标位置。 @John,你的 - 将文本移动到文本区域的开头。
  • 哦。您是否尝试删除用户正在更新的文本区域上的尾随换行符?
  • 我想很明显您正在尝试更新文本区域而不更改用户光标的位置。查看 this SO post 关于获取光标位置的信息。这是一个混乱的过程,需要一些特定于浏览器的 hack。读取光标位置;删除尾随空格;将光标位置设置为之前的位置。您确定需要在用户仍在其中时更新文本区域吗?如果您不能在使用之前保留 textarea 并修剪文本,我会感到惊讶。
  • @Andrew,我正在努力学习 javascript,并决定制作一个仅供我自己使用的在线代码编辑器(以“升级”我的知识)。我认为这就是你问题的答案。
【解决方案3】:

$.trim() 应该可以解决问题!

它从指定字符串的开头和结尾修剪空格和换行符。

【讨论】:

  • 提问者没有在任何地方表明他们正在使用 jQuery……或者他们想要修剪除尾随换行之外的任何内容。
【解决方案4】:

我个人喜欢 lodash 从字符串中修剪换行符。 https://lodash.com/

_.trim(myString);

【讨论】:

  • 要回答这个问题,请使用_.trimRight(myString, '\n')。请注意,这将删除 任何 个尾随换行符,而不仅仅是一个。
【解决方案5】:

你可以这样做(.*[^\n])\n* 结果:https://regex101.com/r/lWKzFy/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2022-11-14
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    相关资源
    最近更新 更多