Ruby-gsub br标记为\n\n用于API,但包括任何空格
我的客户端数据中有Ruby-gsub br标记为\n\n用于API,但包括任何空格,ruby,regex,gsub,Ruby,Regex,Gsub,我的客户端数据中有标记,我需要在Rails API中为React本机应用程序替换这些标记 有时在标记之前或之后有空格,或者两者都有 我正在寻找一个gsub来表示“any标记,并在其前后包含任何空格,替换为“\n\n” 现在我正在做: module ApiHelper def parse_newlines(string) string = string.gsub('<br>', '\n\n') string = string.gsub(' <br>',
标记,我需要在Rails API中为React本机应用程序替换这些标记
有时在
标记之前或之后有空格,或者两者都有
我正在寻找一个gsub
来表示“any
标记,并在其前后包含任何空格,替换为“\n\n”
现在我正在做:
module ApiHelper
def parse_newlines(string)
string = string.gsub('<br>', '\n\n')
string = string.gsub(' <br>', '\n\n')
string = string.gsub('<br> ', '\n\n')
string = string.gsub(' <br> ', '\n\n')
end
end
模块ApiHelper
def parse_换行符(字符串)
string=string.gsub(“
”,“\n\n”)
string=string.gsub(“
”,“\n\n”)
string=string.gsub(“
”,“\n\n”)
string=string.gsub(“
”,“\n\n”)
结束
结束
有更干净的吗
编辑:谢谢大家。我想接受加文和铁皮人的答案……加文因为他给了我一个低劣而肮脏的解决方案,但铁皮人用Nokogiri以一种更有力的方式给出了如此出色/深入的解释
第二次编辑:我收回它。铁皮人…使用Nokogiri实际上更具可读性。你关于在评论中使用正则表达式的论点是有效的。最终你的代码更容易理解。即使我现在使用的是Gavin的,给你一个可接受的答案。这样就可以了:
module ApiHelper
def parse_newlines(string)
# Handles <br>, <br/>, <br />
string.gsub(/\s*<br\s*?\/?>\s*/, "\n\n")
end
end
# irb
> parse_newlines(" <br> ")
=> "\n\n"
> parse_newlines(" <br /> ")
=> "\n\n"
> parse_newlines("<br />")
=> "\n\n"
模块ApiHelper
def parse_换行符(字符串)
#句柄
,
,
string.gsub(/\s*\s*/,“\n\n”)
结束
结束
#内部评级
>解析新行(“
”)
=>“\n\n”
>解析新行(“
”)
=>“\n\n”
>解析新行(“
”)
=>“\n\n”
这样就可以了:
module ApiHelper
def parse_newlines(string)
# Handles <br>, <br/>, <br />
string.gsub(/\s*<br\s*?\/?>\s*/, "\n\n")
end
end
# irb
> parse_newlines(" <br> ")
=> "\n\n"
> parse_newlines(" <br /> ")
=> "\n\n"
> parse_newlines("<br />")
=> "\n\n"
模块ApiHelper
def parse_换行符(字符串)
#句柄
,
,
string.gsub(/\s*\s*/,“\n\n”)
结束
结束
#内部评级
>解析新行(“
”)
=>“\n\n”
>解析新行(“
”)
=>“\n\n”
>解析新行(“
”)
=>“\n\n”
您可以尝试:
string = 'Lorem <br> Ipsum'
puts string.gsub(/\s(<br>)\s/, '\n\n')
# => Lorem\n\nIpsum
puts string.gsub(/\s(<br>)\s/, "\n\n")
# Lorem
#
# Ipsum
string='Lorem
Ipsum'
放置字符串.gsub(/\s(
)\s/,“\n\n”)
#=>Lorem\n\nIpsum
放置字符串.gsub(/\s(
)\s/,“\n\n”)
#洛勒姆
#
#Ipsum
请注意'\n\n'
和“\n\n”
之间的区别,您可以尝试:
string = 'Lorem <br> Ipsum'
puts string.gsub(/\s(<br>)\s/, '\n\n')
# => Lorem\n\nIpsum
puts string.gsub(/\s(<br>)\s/, "\n\n")
# Lorem
#
# Ipsum
string='Lorem
Ipsum'
放置字符串.gsub(/\s(
)\s/,“\n\n”)
#=>Lorem\n\nIpsum
放置字符串.gsub(/\s(
)\s/,“\n\n”)
#洛勒姆
#
#Ipsum
请注意'\n\n'
和“\n\n”
模块之间的区别
def parse_换行符(字符串)
string.gsub(/\s*
\s*/,“\n\n”)
结束
结束
模块ApiHelper
def parse_换行符(字符串)
string.gsub(/\s*
\s*/,“\n\n”)
结束
结束
在处理HTML或XML时,最好使用解析器。我从以下内容开始:
require 'nokogiri'
doc = Nokogiri::HTML::DocumentFragment.parse(<<EOT)
<p>this<br>is<br> some <br>
text<br>and<br >some<br/>more</p>
EOT
doc.search('br').each { |br| br.replace("\n\n") }
doc.to_html
# => "<p>this\n" +
# "\n" +
# "is\n" +
# "\n" +
# " some \n" +
# "\n" +
# "\n" +
# "text\n" +
# "\n" +
# "and\n" +
# "\n" +
# "some\n" +
# "\n" +
# "more</p>\n"
需要“nokogiri”
doc=Nokogiri::HTML::DocumentFragment.parse(“this\n”+
#“\n”+
#“是\n”+
#“\n”+
#“一些\n”+
#“\n”+
#“\n”+
#“文本\n”+
#“\n”+
#“和\n”+
#“\n”+
#“一些\n”+
#“\n”+
#“更多信息\n”
注意:从技术上讲,
相当于一个“\n”,而不是“\n\n”。
将是两行新行,因为这构成了一个段落。当处理HTML或XML时,最好使用解析器。我首先:
require 'nokogiri'
doc = Nokogiri::HTML::DocumentFragment.parse(<<EOT)
<p>this<br>is<br> some <br>
text<br>and<br >some<br/>more</p>
EOT
doc.search('br').each { |br| br.replace("\n\n") }
doc.to_html
# => "<p>this\n" +
# "\n" +
# "is\n" +
# "\n" +
# " some \n" +
# "\n" +
# "\n" +
# "text\n" +
# "\n" +
# "and\n" +
# "\n" +
# "some\n" +
# "\n" +
# "more</p>\n"
需要“nokogiri”
doc=Nokogiri::HTML::DocumentFragment.parse(“this\n”+
#“\n”+
#“是\n”+
#“\n”+
#“一些\n”+
#“\n”+
#“\n”+
#“文本\n”+
#“\n”+
#“和\n”+
#“\n”+
#“一些\n”+
#“\n”+
#“更多信息\n”
注意:从技术上讲,
相当于一个“\n”,而不是“\n\n”。
将是两行新行,因为这构成了一个段落。请阅读“”。提供一个有效的、最低限度的代码示例以及必要的输入(最低限度的HTML)这就说明了问题所在。要求我们创建HTML浪费了我们的时间,也减慢了我们帮助您和其他人的速度。可能会遇到
、
、
或更糟的情况。不要使用正则表达式或字符串操作来更改HTML;这会让您发疯。请阅读“。提供一个有效的、最少的代码示例以及必要的输入(最少的HTML)这就说明了问题所在。要求我们创建HTML浪费了我们的时间,也减慢了我们帮助您和其他人的速度。可能会遇到
、
、
或更糟的情况。不要使用正则表达式或字符串操作来更改HTML;这会让您发疯。而是使用解析器。感谢所有这些详细信息!是的,我意识到我需要两行而不是一行。数据来自客户机的word/excel,他们有这些符号,起初我错误地用一个
标记替换了这些符号。然后意识到我不能在react native中使用
标记,我需要使用/n。然后意识到我实际上需要两个/n。Nokogiri看起来很不错。我可能已经我想稍后再做一些更健壮的解析,这会很有帮助。非常感谢!感谢所有这些细节!是的,我意识到我需要两行而不是一行。数据来自客户端的word/excel,他们有这些¨符号,起初我错误地将其替换为一个
标记。然后意识到我无法使用
ta在react native中的gs,我需要使用/n。然后意识到我实际上需要两个/n。Nokogiri看起来非常棒。我可能以后需要做一些更健壮的解析,这将非常有用。非常感谢!