2014-10-19 117 views
0

我从xml解析值并将它们保存到变量。我能够从字符串中除去大括号和双引号。该值在页面上显示如下:[“MPEG Video”]。在插入Rails4之前,如何从我的字符串中去掉双引号和大括号?

下面是分析它保存到一个变量的所示例:

@video_format = REXML::XPath.each(media_parse_doc, "//track[@type='Video']/Format/text()") { |element| element } 

我尝试使用的.ts这样的:

@video_format = (REXML::XPath.each(media_parse_doc, "//track[@type='Video']/Format/text()") { |element| element }).ts('[]"','') 

,但没有奏效。我看到一些例子告诉你gsub,我查看了gsub的api dock,但是我并不了解例子中的思想逻辑,以便能够正确地将它应用于我自己的案例。下面是一个例子:

"foobar".gsub(/^./, "") # => "oobar" 

我的理解是消除TE第一个字符,但我不知道如何将它设置为删除“和[ 为什么/ ^那是ASCII的东西? ?有人可以告诉我正确的语法,从我的varialbes中删除双引号和大括号,并解释逻辑过程,以便我可以更好地理解以后自己使用吗? 感谢您的帮助!

+0

你能预计输出一起发布的输入? – 2014-10-19 01:42:35

+1

**我正在解析xml中的值并将它们保存到变量中。**那么为什么不发布xml的一个小例子以及要从xml生成的字符串?而且你仍然犯了你在最近十个问题中发布的同样的错误。你为什么不尝试阅读一些问题的答案? – 7stud 2014-10-19 02:25:55

+0

什么是ts?铁轨文件没有揭示这种方法。ruby的String和Array文档没有列出名为ts的方法。如果你实际上是指String#tr,'puts'--->“”hello“] <----'。tr('[]'','')=>'---> hello <--- '然而,REXML#每个都不会返回一个字符串吗?你会知道,如果你真的阅读你发布的所有其他问题的答案。 – 7stud 2014-10-19 02:47:43

回答

3

If你想了解正则表达式,查看http://rubular.com/

"foobar".gsub(/^./, "") # => "oobar"该特定示例将用“”替换该字符串的第一个字母(即,无)。原因在于^表示“将匹配固定到字符串的开始处”,并且.表示“匹配任何字符” - 因此,它会匹配字符串开头的任何字符。封装/字符只是正则表达式的标准分隔符 - 所以它只是您需要弄清楚的^.

要更换双引号:'fo"o"bar'.gsub(/"/, "") # => "foobar"

要更换左括号:'fo[o[bar'.gsub(/\[/, "") # => "foobar"(因为方括号在正则表达式的特殊字符,你有一个\前缀他们当你想使用他们作为一个“正常“字符

更换所有的报价和正方形brackers中之一:'fo[o"[b]"ar'.gsub(/("|\[|\])/, "") # => "foobar"

(括号表示的基团,以及管道|指示‘或者’所以,("|\[|\])意思是“匹配的该组中的事物:报价,左方括号或右方括号“。

但是真正你应该做的是做一个很好的介绍正则表达式的教程,并从基础开始。一旦你明白了,开始撰写你自己的简单正则表达式不应该太难。

如果你是在Mac上,这个程序是非常有用的编写自己的正则表达式的:http://krillapps.com/patterns/