我有一个字符串,如:
<?xml version="xyzt" standalone="112.0" sxcx="xcxc"?>
我想将字符串提取到数组,其中每个元素都是字符串的属性,例如[version="xyzt", standalone="112.0", sxcx="xcxc"]
。
我尝试使用string.scan(/\s\w+="\.*"/) do |block| puts block end
,但我没有得到结果..请告诉我为什么以及如何做到这一点。
答案 0 :(得分:0)
string[/(?<=\<\?xml ).*(?=\?>)/]
#⇒ 'version="xyzt" standalone="112.0" sxcx="xcxc"'
如果您需要用方括号括起来:
?[ << string[/(?<=\<\?xml ).*(?=\?>)/] << ?]
#⇒ '[version="xyzt" standalone="112.0" sxcx="xcxc"]'
获取属性的哈希值:
string[/(?<=\<\?xml ).*(?=\?>)/].split(/\s+/)
.map { |e| e.split('=') }
.to_h
#⇒ {
# "standalone" => "\"112.0\"",
# "sxcx" => "\"xcxc\"",
# "version" => "\"xyzt\""
# }
答案 1 :(得分:0)
str = '<?xml version="xyzt" standalone="112.0" sxcx="xcxc"?>'
我假设您要生成数组:
['version="xyzt"', 'standalone="112.0"', 'sxcx="xcxc"']
您可以按照以下方式执行此操作:
arr = str.scan(/[a-z]+\=\S+/)
#=> ["version=\"xyzt\"", "standalone=\"112.0\"", "sxcx=\"xcxc\"?>"]
puts arr
# version="xyzt"
# standalone="112.0"
# sxcx="xcxc"?>