我有一个字符串,我想序列化和反序列化。例如:
"hello, world"
现在,如果我按world
找到并替换(转储步骤)每个o
子字符串,则此字符串将变为:
"hello, o"
但是,如果我尝试以o
到world
(加载步骤)的另一种方式再次查找并替换,则此字符串变为:
"hellworld, world"
...这与第一个字符串不同。有没有一种简单的方法来处理这个问题,使用Ruby 1.9.2来解决这些问题?
谢谢!
修改:
换句话说,我能够:
world
”)(例如“o
”)。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
感谢您的任何想法:)
答案 0 :(得分:0)
出于好奇,你为什么要这样做? 这与ruby没什么关系,但是使用正则表达式。
无论如何,存储原始字符串会不会更容易,以便你可以恢复它?
或者,如果您只想匹配上一个o
,请尝试使用模式o$
。
但我真的认为你应该提供更多关于你的实际用例的信息。
答案 1 :(得分:0)
如果您将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