ruby-on-rails - 如何从 ruby​​ 中的字符串中分割值

标签 ruby-on-rails ruby regex xml-parsing html-parser

此处列出了我的示例字符串。我想将每个值结果拆分为数组或散列来处理每个元素的值。

<div id="test">
           accno:          123232323 <br>
           id:            5443534534534 <br>
           name:            test_name <br>
           url:                  www.google.com <br>

 </div>

如何获取哈希或数组中的每个值。

最佳答案

使用正则表达式很容易:

s = '<div id="test">
           accno:          123232323 <br>
           id:            5443534534534 <br>
           name:            test_name <br>
           url:                  www.google.com <br>

 </div>'

 p s.scan(/\s+(.*?)\:\s+(.*?)<br>/).map.with_object({}) { |i, h| h[i[0].to_sym] = i[1].strip }

或者你可以精确你的键(accno、id、name、url),如 ([a-z]+)如果它们仅包含小写字母:

 p s.scan(/\s+([a-z]+)\:\s+(.*?)<br>/).map.with_object({}) { |i, h| h[i[0].to_sym] = i[1].strip }

结果:

 {:accno=>"123232323", :id=>"5443534534534", :name=>"test_name", :url=>"www.google.com"}

更新

如果是:

<div id="test"> accno: 123232323 id: 5443534534534 name: test_name url: www.google.com </div>

正则表达式将是:

 /([a-z]+)\:\s*(.*?)\s+/

([a-z]+) - 这是哈希键,它可能包含 -_ ,然后添加如下: ([a-z]+\-_) 。该方案假设 key 后跟随: (也许有空格),然后是一些文本,直到空格。或(\s+|<)如果行结束时没有空格:url: www.google.com</div>

关于ruby-on-rails - 如何从 ruby​​ 中的字符串中分割值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535800/

相关文章:

javascript - 根据网络带宽自动选择合适的视频质量?

Javascript 投票 acts_as_votable

ruby-on-rails - 在 Ruby on Rails 的每个循环中,如果没有任何迭代,是否有做某事的好方法?

Ruby - 如何根据值有效地从哈希中获取数据

mysql - Fedora 和安装 Ruby,使用 gem 系统,将 MySQL 连接到 Ruby

ruby-on-rails - Rails - 用于电子邮件验证的正则表达式

ruby-on-rails - 带有 API key 的 Google map 无法在生产中使用

ruby - PGError : ERROR: relation "companies" does not exist( postgresql , mysql, rails 3)

javascript正则表达式查找特定句子

java - 用 Java 中的 RegEx 替换除一个之外的所有标签