首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将"<p>A</p>,<p>B</p>,<p>C</p>“转换为数组?

如何将"<p>A</p>,<p>B</p>,<p>C</p>“转换为数组?
EN

Stack Overflow用户
提问于 2014-10-23 10:39:30
回答 3查看 90关注 0票数 0

我想将<p>A</p>,<p>B</p>,<p>C</p>转换为如下所示的数组:

代码语言:javascript
运行
复制
["A","B", "C"]

我试过.scan(/(<p>)(.*?)(<\/p>)/i)了。Ruby中最方便、最健壮、容错能力更强的方式是什么?

EN

回答 3

Stack Overflow用户

发布于 2014-10-23 12:36:45

在字符串片段上使用正则表达式

如果你知道你的HTML标签总是小写的,而你的段落正文总是大写的,那么这是可行的:

代码语言:javascript
运行
复制
"<p>A</p>,<p>B</p>,<p>C</p>".scan /\p{Upper}/
#=> ["A", "B", "C"]

但它将是脆弱的。不过,这肯定适用于你发布的语料库。

在HTML片段上使用Nokogiri

因为您有一个HTML片段,所以您应该真正使用解析器。例如:

代码语言:javascript
运行
复制
require 'nokogiri'

doc = Nokogiri::HTML::DocumentFragment.parse "<p>A</p>,<p>B</p>,<p>C</p>"
doc.xpath(?p).map &:text
#=> ["A", "B", "C"]

除非您的输入确实是病态的,否则即使输入内容不同,Nokogiri也会可靠地从您的段落标签中提取文本节点,并且会忽略节点之外的无关字符,例如字符串片段中的逗号。

票数 4
EN

Stack Overflow用户

发布于 2014-10-23 10:45:34

尝试如下所示:

代码语言:javascript
运行
复制
"<p>A</p>,<p>B</p>,<p>C</p>".gsub(/<p>|<\/p>/,'').split(',')

这将删除<p></p>,并将结果字符串拆分为一个数组

票数 0
EN

Stack Overflow用户

发布于 2014-10-23 19:18:58

在编辑正则表达式以删除<p>标记周围的括号,然后平整结果之后,我得到了您想要的输出。

"<p>A</p>,<p>B</p>,<p>C</p>".scan(/<p>(.*?)<\/p>/i).flatten

这就产生了["A", "B", "C"]

http://ideone.com/bfDtGc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26520432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档