Tag: string

to_json在Rails中返回字符串而不是json

下面的代码应该返回一个json: @series = @series.map do |serie| { :name => serie.name, :id => serie.id } @series.to_json 它的回报如下: “[{\”name\”:\”Barra\”,\”id\”:3},{\”name\”:\”Botafogo 1\”,\”id\”:1},{\”name\”:\”Botafogo 2\”,\”id\”:2},{\”name\”:\”Tijuca\”,\”id\”:4}]” 为什么它返回一个字符串而不是一个json? ‘json’gem在我的.rb文件的顶部都安装并需要

字符串比较不适用于Ruby

我想比较给出的两个值 但这种比较似乎根本不起作用。 我检查了current_user.role.title的值,然后打印出“Test”; 但是当我在html页面中对它进行比较时,这会失败。 我也尝试过 但它不起作用!! current.role.title的值作为Varchar存储在数据库中。

心理医生说«在中级正在建立一个AST ……»但是,到底是怎么回事?

我使用Sych做了这个旧代码: yaml_as “tag:yaml.org,2002:#{self}” def to_yaml(opts = {}) YAML::quick_emit(self, opts) do |out| out.map(taguri, to_yaml_style) do |map| map.add(‘name’, name) map.add(‘address’, full_address.upcase) if full_address? end end end 输出类似的东西: — !Contact name: SMOKE OIL address: |- SMOKE OIL 1 RUE DE LA PAIX 75002 PARIS FRANCE 现在,我正在升级旧代码,转到Psych所以,我阅读了doc并做了: yaml_as “tag:yaml.org,2002:#{self}” def encode_with(coder) coder[‘name’] = name coder[‘address’] = full_address.upcase if full_address? […]

Ruby – 寻找某种“Regexp unescape”方法

我有一堆带有特殊转义码的字符串,我想存储未转义 – 例如,解释器显示 “\\014\”\\000\”\\016smoothing\”\\011mean\”\\022color\”\\011zero@\\016″但我希望它显示(检查时)为”\014\”\000\”\016smoothing\”\011mean\”\022color\”\011zero@\016” 什么是取消它们的方法? 我想我可以制作一个正则表达式来从每个连续的n个反斜杠中删除1个反斜杠,但我没有很多正则表达式的经验,似乎应该有一个“更优雅”的方法来做到这一点。 例如,当我puts MyString它会显示我想要的输出,但我不知道如何将其捕获到变量中。 谢谢! 编辑添加上下文:我有这个类用于编组/恢复一些东西,但当我恢复一些旧的字符串时,它吐出一个类型错误,我已经确定是因为它们不是 – 因为一些莫名其妙的原因 – 存储为base64。 它们似乎刚刚被转义,这是我不想要的,因为尝试同样地恢复它们会产生TypeError TypeError: incompatible marshal file format (can’t be read) format version 4.8 required; 92.48 given TypeError: incompatible marshal file format (can’t be read) format version 4.8 required; 92.48 given因为Marshal查看字符串的第一个字符来确定格式。 require ‘base64’ class MarshaledStuff < ActiveRecord::Base validates_presence_of :marshaled_obj def contents obj = […]

如何删除Ruby中字符串中的最后一个元音?

如何在字符串中定义-last元音? 例如,我有一个单词“经典” 我想找到“classs i c”这个词的最后一个元音是字母“ i ”,并删除最后一个元音。 我在想 : def vowel(str) result = “” new = str.split(” “) i = new.length – 1 while i < new.length if new[i] == "aeiou" new[i].gsub(/aeiou/," ") elsif new[i] != "aeiou" i = -= 1 end end return result end

将Ruby字符串编码为JSON字符串

json gem不允许将字符串直接编码为其JSON表示。 我暂时移植了这个PHP代码: $text = json_encode($string); 对这个Ruby: text = string.inspect 并且它似乎做了这项工作,但由于某种原因,如果string本身包含带换行符的文字字符串(它实际上是JS代码),这些新行\n将保持原样\n ,而不是编码为\\n 。 我能理解这是否是#inspect的正确行为,但…… 如何在Ruby中将字符串值编码为其JSON表示?

在Ruby中为Regex模式生成字符串

在Python语言中,我发现rstr可以为正则表达式模式生成一个字符串。 或者在Python中我们有这个方法可以返回字符串的范围: re.sre_parse.parse(pattern) #….. (‘range’, (97, 122)) …. 但在Ruby中我没有找到任何东西。 那么如何在Ruby(反向正则表达式)中为正则表达式模式生成字符串? 我想要这样的事情: “/[a-z0-9]+/”.example #tvvd “/[a-z0-9]+/”.example #yt “/[a-z0-9]+/”.example #bgdf6 “/[a-z0-9]+/”.example #564fb “/ [a-z0-9] + /”是我的输入。 输出必须是我的正则表达式模式中可用的正确字符串。 这里的输出是: tvvd,yt,bgdf6,564fb, “example”方法生成它们。 我需要那种方法。 谢谢你的建议。

在Ruby中解析URL字符串

我有一个非常简单的字符串,我想在ruby中解析并试图找到最优雅的解决方案。 该字符串的格式为/xyz/mov/exdaf/daeed.mov?arg1=blabla&arg2=3bla3bla 我想要的是:string1:/xyz/mov/exdaf/daeed.mov string2:arg1 = blabla&arg2 = 3bla3bla 所以基本上代表了吗? 但找不到一个好例子。 任何帮助,将不胜感激。

ruby这里的文件

我正在尝试在Ruby中编写一个方法,该方法使用带有输入变量的HTML代码的here-document并相应地填充它们。 我的方法是: calcForm(left, op, right, result) 我正在使用的html标签是 + * = ????? 到处都有问号,我的方法必须填写变量left,op,right和result。 例如, calcForm(6, “mul”, 7, 42) 应该返回字符串: + * = **42** 因此,“选择”一词应出现在“添加”或“jul”之后,具体取决于op的值,左侧和右侧的值应填入value =“…”,结果应出现在最后一行。 我是ruby的新手,但到目前为止,这是我对这里的文档的了解: the_tags = <<HERE + * = #{result} HERE def calcForm(left,op,right,result) 我被困在这一点上。 我很困惑如何将我的方法calcForm连接到上面的here文档。 任何有关这方面的帮助将不胜感激! 谢谢!

为什么哈希冻结的字符串键?

根据规范 ,用作哈希键的字符串被复制和冻结。 其他可变对象似乎没有这么特别的考虑。 例如,使用数组键,可以使用以下内容。 a = [0] h = {a => :a} h.keys.first[0] = 1 h # => {[1] => :a} h[[1]] # => nil h.rehash h[[1]] # => :a 另一方面,使用字符串键不能完成类似的操作。 s = “a” h = {s => :s} h.keys.first.upcase! # => RuntimeError: can’t modify frozen String 当涉及到散列键时,为什么字符串被设计为与其他可变对象不同? 是否存在此规范变得有用的用例? 该规范还有哪些其他后果? 我实际上有一个用例,其中没有关于字符串的这种特殊规范可能是有用的。 也就是说,我用yaml gem读取了一个描述哈希的手动编写的YAML文件。 键可能是字符串,我想在原始YAML文件中允许不区分大小写。 当我读取文件时,我可能会得到这样的哈希: […]