在Ruby中提取字符串的一部分

时间:2013-01-28 19:37:29

标签: ruby string parsing string-parsing

我知道这是一个简单的问题,但我想用rails提取字符串的一部分。 通过了解字符串的开头和结尾字符并提取它,我会像Java那样做,但我想用ruby方式做到这一点,这就是我需要你帮助的原因。

我的字符串是:

<a href="javascript:launchRemote('99999','C')">STACK OVER AND FLOW             </a>

我希望引号之间的数值=&gt; 99999和link =&gt;的值STACK OVER AND FLOW

我应该如何在ruby中解析这个字符串?

感谢。

3 个答案:

答案 0 :(得分:3)

如果你需要解析html:

> require 'nokogiri'
> str = %q[<a href="javascript:launchRemote('99999','C')">STACK OVER AND FLOW</a>]
> doc = Nokogiri.parse(str)
> link = doc.at('a')
> link.text
=> "STACK OVER AND FLOW"
> link['href'][/(\d+)/, 1]
=> "99999"

http://nokogiri.org/

答案 1 :(得分:1)

如果您在字符串

中只有一个链接,这应该有效
str = %{<a href="javascript:launchRemote('99999','C')">STACK OVER AND FLOW             </a>}
num = str.match(/href=".*?'(\d*)'.*?/)[1].to_i
name = str.match(/>(.*?)</)[1].strip

答案 2 :(得分:0)

一次两种方式:

str = "<a href=\"javascript:launchRemote('99999','C')\">STACK OVER AND FLOW         </a>"
num, name = str.scan(/launchRemote\('(\d+)'[^>]+>\s*(.*?)\s*</).first
# => ["99999", "STACK OVER AND FLOW"]