2014-10-19 1 views
0

Я разбираю значения из xml и сохраняю их в переменных. Мне удалось удалить все строки, кроме скобок и двойных кавычек из строки. Значение отображается на странице: ["MPEG Video"].Как я могу удалить двойные кавычки и фигурные скобки из моих строк перед вставкой в ​​Rails4?

Вот exampled спасительного его переменный разбор:

@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, и я посмотрел на api dock для gsub, но я не понимаю логику мысли в примерах, чтобы иметь возможность правильно применить ее к моему собственному делу. Вот один из примеров:.

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

Я понимаю, что это удаление тэ первого символа, но я не знаю, как настроить его, чтобы удалить "и [ Почему/^ Это ASCII для чего-то? ? Может кто-нибудь, пожалуйста, покажите мне правильный синтаксис, чтобы удалить двойные кавычки и фигурные скобки из моих varialbes и объяснить логический процесс, чтобы я мог лучше понять, чтобы использовать его самостоятельно в будущем? Благодарим вас за помощь!

+0

вы могли бы разместить вход наряду с ожидаемым выходом? –

+1

** Я разбираю значения из xml и сохраняю их в переменных. ** Тогда почему вы не опубликовали небольшой пример вашего xml и строки, которую вы хотите создать из xml? И вы по-прежнему делаете те же ошибки, что и в последних десяти вопросах. Почему бы вам не попробовать прочитать ответы на свои вопросы некоторое время? – 7stud

+0

Что такое 'ts'? Рельсы не показывают такого метода.И в документах Ruby String и Array не указан метод с именем ts. Если вы на самом деле имеете в виду String # tr, 'puts '---> [" hello "] <----'. Tr ('[]"', '') => '---> hello <--- -' Но тогда REXML # каждый не возвращает String? Вы бы знали, что если вы действительно прочитаете ответы на все остальные вопросы, которые вы разместили. – 7stud

ответ

3

вы хотите понять регулярные выражения, посмотрите 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/