草庐IT

Ruby:将转义字符串写入 YAML

以下...require'yaml'test="I'mab&dstring"File.open('test.yaml','w')do|out|out.write(test.to_yaml)end...输出...---thisisab&dstring如何让它输出---'thisisab&dstring'??? 最佳答案 如果你想在YAML中存储转义字符串,在将其转换为YAML之前使用#inspect对其进行转义:irb>require'yaml'=>trueirb>str=%{Thisstring'salittlecomplicate

ruby - 如何在 ruby​​ 中的字符串中包含条件

我想在字符串中放置一个变量,但也有一个变量条件类似于:x="best""Thisisthe#{if!y.nil?yelsex}question"在字符串之外我可以做y||x。我在字符串中做什么? 最佳答案 "Thisisthe#{y.nil??x:y}question"或"Thisisthe#{y?y:x}question"或"Thisisthe#{y||x}question"你可以在插值内部像在外部一样使用y||x 关于ruby-如何在ruby​​中的字符串中包含条件,我们在Stack

ruby - Ruby 中的 String.equalsIgnoreCase(...) 等价物

这个问题在这里已经有了答案:Howtocomparestringsignoringthecase(5个答案)关闭6年前。我想以不区分大小写的方式在Ruby中测试2个字符串是否相等。在语言中,例如Fantom,你只需写:string1.equalsIgnoreCase(string2)在Ruby中执行此操作的惯用方法是什么?

ruby - 如何从可能具有前导零的字符串中解析数字?

在ruby​​中,我正在解析以下格式的日期:24092008。我想将每个部分(年、月、日)转换为数字。我使用正则表达式将它们拆分,生成三个字符串,我将它们传递给Integer构造函数。date=~/^([\d]{2})([\d]{2})([\d]{4})/year=Integer($3)month=Integer($2)day=Integer($1)当它到达月份线时,它崩溃如下:`Integer':invalidvalueforInteger:"09"(ArgumentError)我花了一段时间才意识到它将前导零解释为八进制数,而09不是有效的八进制数(它与“07”一起工作正常)。是否

ruby - 由两个不同的分隔符分割的字符串

我有这样的字符串'some-dasd\dasd-dasdas\dasdas-dasd-das\dsad'。我需要通过两个不同的符号'\'和'-'将字符串拆分为数组,所以我想得到数组['some','dasd','dasd','dasdas','dasdas','dasd','das','dsad']。最好的方法是什么? 最佳答案 "ome-dasd\dasd-dasdas\dasdas-dasd-das\dsad".split(/\\|-/)应该可以解决问题。 关于ruby-由两个不同的

ruby-on-rails - 使用 gsub 将特定字符替换为换行符(Ruby、Rails 控制台)

烦人的问题。我试图用换行符(\n)替换模型描述字段中的所有分号字符。数据库是sqlite。该字段是文本类型。如果我在Rails控制台手动执行此操作(使用\n换行符手动键入单个记录的描述),Rails控制台会自动转义\n,并且描述字段会填充\\n.如果我使用gsub以编程方式执行此操作,我会遇到以下情况:>>s=Sample.find(:first)=>...记录的详细信息...>>s.description.gsub!(/;/,"\n")=>...成功-一切看起来都不错,返回值中的新行由\n...表示>>s.save=>true>>reload!Reloading=>true>>s=S

Ruby 将 String 拆分为两部分并放入带有预定义键的散列

我不知道这是否真的是好的ruby​​代码,但我想做的是将一个String分成两个单独的部分,并将这两个部分作为两个特定键的值。例如:name_a="HenryFillenger".split(/\s+/,2)name={:first_name=>name_a[0],:last_name=>name_a[1]}我想知道这是否可以通过一些ruby​​魔法在一行中完成。 最佳答案 您可以使用Hash[]和zip这样做:name=Hash[[:first_name,:last_name].zip("HenryFillenger".split

Ruby String.encode 仍然给出 "invalid byte sequence in UTF-8"

在IRB中,我正在尝试以下操作:1.9.3p194:001>foo="\xBF".encode("utf-8",:invalid=>:replace,:undef=>:replace)=>"\xBF"1.9.3p194:002>foo.match/foo/ArgumentError:invalidbytesequenceinUTF-8from(irb):2:in`match'知道出了什么问题吗? 最佳答案 我猜"\xBF"已经认为它是用UTF-8编码的,所以当你调用encode时,它认为你正在尝试编码一个UTF-8中的UTF-8字符

ruby-on-rails - Rails 未定义方法 `strftime' 为 "2013-03-06":String

我遇到了错误“2013-03-06”的未定义方法`strftime':String当尝试使用strftime从字符串2013-03-06正常显示日期(2013年6月3日或类似日期)时。在我的index.html.erb中执行此操作的行看起来像这样我只是在学习Rails,所以我确信这只是一个愚蠢的初学者错误,我们将不胜感激。谢谢 最佳答案 当strftime是时间/日期类的方法时,您的截止日期看起来是一个字符串。你可以试试这个:Date.parse(task.duedate).strftime("%B%e,%Y")

ruby-on-rails - rails : why is calling to_a on a string not valid in a rake task?

我正在尝试解密一组用于数据库迁移的密码。我有一些旧的Rails代码(实际上是一个Runner脚本)可以很好地解密它们。但是将相同的代码放入Rake任务会导致任务失败,并显示...未定义的方法`to_a'for"secretkey":String...为什么在字符串上调用to_a在Rake任务中无效,但在Runner脚本中却完全有效?require'openssl'KEY='secretkey'namespace:importdotask:users=>:environmentdodefdecrypt_password(pw)cipher=OpenSSL::Cipher::Cipher.