此处列出了我的示例字符串。我想将每个值结果拆分为数组或散列来处理每个元素的值。
<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/