草庐IT

REGEXP_REPLACE

全部标签

ruby - 为什么某些 Ruby 方法(如 String#replace)会改变变量的副本?

所以首先我只是学习Ruby并且有JavaScript背景。我有一个问题,我找不到答案。我有这个例子:a='red'b=ab.replace('blue')b='green'printablue我的问题是:为什么会这样?我知道设置b=a使它们成为相同的object_id,因此从技术上讲,同一个变量字符串有两个名称。但我从来没有看到使用这种递归值更改的理由。如果我正在设置b=a,那是因为我想操纵a的值而不更改它。此外,似乎有时一个方法会修改a,但有时它会导致“b”成为一个新对象。这似乎模棱两可,毫无意义。我什么时候会用到它?重点是什么?这是否意味着我不能将a的值传递给另一个变量,而不会将任

ruby-on-rails - rails 3.2 : Replace null values with empty string from json serialization

我正在使用Rails3.2serialization将ruby​​对象转换为json。例如,我已经将ruby​​对象序列化为以下json{"relationship":{"type":"relationship","id":null,"followed_id":null}}在我的类RelationshipActiveRecord::Base中使用以下序列化方法defas_json(opts={}){:type=>'relationship',:id=>id,:followed_id=>followed_id}end我需要用空字符串替换空值,即空双引号,以响应json。我怎样才能做到这一

ruby - 使用 RegExp 格式化字符串以设置分隔符

我正在尝试按如下方式格式化字符串确保所有数字都使用破折号作为分隔符。示例:480.01.4430和480014430都将是480-01-4430。这就是我到目前为止想出的,但我不明白为什么它不起作用defformat_ssns(string)ssn=string[/\d{9}/]ssn.gsub(/\d{9}/,/\d{3}-\d{2}-\d{4}/)end 最佳答案 奇怪的是你没有得到异常:gsub的第二个参数必须是字符串(或可以转换为字符串的东西),而不是正则表达式。这是一个工作示例:ssn='123456789'ssn.gsu

ruby - 如何修复 : Liquid Exception: Tag '{%' was not properly terminated with regexp:/\%\}/?

我从我的Jekyll网站生成器中得到这个输出LiquidException:Tag'{%'wasnotproperlyterminatedwithregexp:/\%}/这是怎么回事? 最佳答案 事实证明,您可能在模板中犯了格式错误。例如:{%ifsite.ALERTorsite.ALERT_en%}会坏但是{%ifsite.ALERTorsite.ALERT_en%}很好。 关于ruby-如何修复:LiquidException:Tag'{%'wasnotproperlytermina

ruby - 什么时候使用 Regexp.new()?

我找不到任何合适的答案,因为Regexp代表正则表达式。这是一个例子:test=Regexp.new("Hello")它返回/Hello/,但我对它的使用感到困惑。为什么不直接使用/Hello/呢?谁能给我一个Regexp.new()函数的小例子? 最佳答案 假设您想让您的系统检测“以DOG开头并以CAT结尾的句子”。明显的正则表达式类似于/DOG.+CAT\./[1].到目前为止,有效。但现在您希望能够增强系统,以便用户可以配置开始和结束词。您可以使用//语法和插值来实现:/#{startWord}.+#{endWord}\./但

ruby - 什么是 Replace Conditional with Polymorphism 重构?它是如何在 Ruby 中实现的?

我最近在要求消除ruby​​中的if..else条件时遇到了用多态性重构替换条件。thelink任何人都可以向我解释我如何在ruby​​中实现相同的功能吗?(一个简单的甜蜜代码就可以) 最佳答案 ReplaceConditionalwithPolymorphismRefactoring非常简单,而且几乎就是它听起来的样子。您有一个带有如下条件的方法:defspeedcase@typewhen:europeanthenbase_speedwhen:africanthenbase_speed-load_factor*@number_of

ruby - ruby 的 Hash.replace 或者 Array.replace 有什么用?

我总是在Array和Hash文档中看到replace,我一直认为它很奇怪。我确定我已经做过很多次这样的事情:a=[:a,:b,:c,:d]...ifsome_conditiona=[:e,:f]end但我从没想过用这个代替:a=[:a,:b,:c,:d]...ifsome_conditiona.replace[:e,:f]end我认为这是预期用途。这真的可以节省内存,或者有其他好处,还是只是一种风格? 最佳答案 a=[:e,:f]和a.replace[:e,:f],两条语句生成指令如下:1.a=[:a,:b,:c,:d]a=[:e,

Ruby 1.9 unicode 在 Regexp 中转义

我刚刚将一个旧项目升级到Ruby1.9.3。我在使用unicode字符串时遇到了很多麻烦。归结为:p="\\username";"AnyString".match(/#{p}/)这在1.8中有效,并按预期返回nil。但是,在1.9中它会抛出:ArgumentError:invalidUnicodeescape我正在尝试匹配字符串中的'\u'。我认为这两个反斜杠会使它免于注册为unicode。我在这里错过了什么?编辑:单引号也不起作用:1.9.3p429:002>p='\\username';"AnyString".match(/#{p}/)ArgumentError:invalidUn

Ruby string.scan(/#{regexp_pattern}/) - 执行时间

问题:ruby.scan使用正则表达式模式最多需要5分钟。时间取决于正在扫描的字符串。测试在ruby​​“2.5.1”和ruby​​“2.4.2”上运行。例子:deftime_regexp_test(string)start=Time.nowputs"parsestart:#{start}"regexp_pattern="[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-

ruby - :replace,如何用:invalid and :undef args for encoding using CSV.读取?

自ruby​​1.9起,CSV使用可以执行编码的解析器,如果您使用如下方法:::foreach、::open、::read和::readlines。例如:CSV.read('path/to/file',encoding:"windows-1252:UTF-8")尝试读取windows-1252中的文件并返回一个数组使用utf-8编码的字符串。如果字符集之间的编码转换有未定义的字符,它会给出一个Encoding::UndefinedConversionError。String.encode方法有一些很好的参数来处理这个未定义的字符:str=str.encode('UTF-8',无效::r