ruby - 替换 "\n"但不是 "\n\n"

标签 ruby gsub

如何将 "\n" 而不是 "\n\n" 等替换为 "\n"

text1 = "Hello\nWorld"
text1.sub! "\n", "  \n"
=> "Hello  \nWorld"

text2 = "Hello\n\nWorld"
text2.sub! "\n\n", "  \n"
=> "Hello  \n\nWorld"
SHOULD BE: => "Hello\n\nWorld"

最佳答案

您可以使用正则表达式 /(?<!\n)\n(?!\n)/ , 匹配 \n只有当它没有以另一个 \n 为前缀时并且后面没有 \n .

text1 = "Hello\nWorld"
# => "Hello\nWorld"
text1.sub /(?<!\n)\n(?!\n)/, "  \n"
# => "Hello  \nWorld"
text2 = "Hello\n\nWorld"
# => "Hello\n\nWorld"
text2.sub /(?<!\n)\n(?!\n)/, "  \n"
# => "Hello\n\nWorld"

关于ruby - 替换 "\n"但不是 "\n\n",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837574/

相关文章:

r - 在数据帧上使用 gsub()

ruby 正则表达式替换方程式

ruby - 如何使用正则表达式查找包含正则表达式特殊字符的字符串

ruby-on-rails - Rails 什么时候用点而不是反斜杠创建路径?

ruby - 无法使用 ruby​​ 脚本从 amazon s3 中删除文件

java - ruby 到 android 3DES 加密 - 填充 block 损坏

regex - R中字符向量的快速转义/解析

ruby - solr 新添加的索引上的文档在重启前没有反射(reflect)出来

Ruby 正则表达式匹配输入文本文件字符串中的一行

ruby-on-rails - Ruby on Rails - 除非多个条件