Выход из строки Ruby, для сериализации (сброс и загрузка строки) - PullRequest
1 голос
/ 31 августа 2011

У меня есть строка, которую я хотел бы сериализовать и десериализовать .Например, это:

"hello, world"

Теперь, если я найду и заменю ( dump step) каждую подстроку world на o, эта строка станет:

"hello, o"

Но, если я попытаюсь снова найти и заменить другим способом от o до world ( load step), эта строка станет:

"hellworld, world"

... что не совпадает с первой строкой.Есть ли простой способ справиться с этим, избегая символов, с Ruby 1.9.2?

Спасибо!

РЕДАКТИРОВАТЬ :

Другими словами, Я мог бы:

  1. Заменить параметр (например, "world") в тексте значением (например, "o").
  2. Замените любые значения ("o", в соответствии с примером) параметром ("world", в соответствии с примером)

Поэтому я хотел бы иметь возможность сделать это (с чем-то вроде dump() и load() методов):

string = "Hello world, Ruby on Rails 3.1.0 is out! Yay!"
serialized_string = dump(string)
    # => "Hell\o o, Ruby \on Rails 3.1.0 is \out! Yay!"

load(serialized_string).should == string # => true

Спасибо за любую идею:)

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Если вы используете gsub с регулярным выражением, которое будет работать.

"hello, o".gsub /o$/, world

Я считаю, что это будет делать то, что вы хотите.

РЕДАКТИРОВАТЬ

Если вы знаете, что слово всегда будет окружено пробелом, началом или концом строки, вы можете использовать что-то вроде:

o = "whatever you want"
world = "the very long article you mentioned"
"an even longer article".gsub /^#{o}&|^#{o}\s|\s#{o}\s|\s#{o}&/, world
0 голосов
/ 31 августа 2011

Из любопытства, зачем ты это делаешь? Это не имеет ничего общего с ruby, но с регулярными выражениями.

В любом случае, не проще ли сохранить исходную строку, чтобы ее можно было восстановить?

В качестве альтернативы, если вы хотите соответствовать только последнему o, попробуйте использовать шаблон o$.

Но я действительно думаю, что вы должны предоставить больше информации о вашем фактическом сценарии использования.

...