Ruby:如何编写“Stringscrub”和“Objectpresence”?
我想简单地使用Stringscrub和Objectpresence。基本上,我有以下代码:Ruby:如何编写“Stringscrub”和“Objectpresence”?,ruby,utf-8,Ruby,Utf 8,我想简单地使用Stringscrub和Objectpresence。基本上,我有以下代码: some_name = params[:name].presence || 'nobody' 这意味着,如果params[:name]存在,那么一些\u name=params[:name],其他一些\u name='nobody' 如果我尝试使用该方法,我会得到一个ArgumentError:UTF-8错误中的无效字节序列: 为了解决这个问题,我尝试在bugs.ruby-lang.org上使用Stri
some_name = params[:name].presence || 'nobody'
这意味着,如果params[:name]存在,那么一些\u name=params[:name],其他一些\u name='nobody'
如果我尝试使用该方法,我会得到一个ArgumentError:UTF-8错误中的无效字节序列:
为了解决这个问题,我尝试在bugs.ruby-lang.org上使用Stringscrub,该文件在ruby 2.1中提供,或者使用Stringscrub-gem
assert_equal("\uFFFD\uFFFD\uFFFD", u("\x80\x80\x80").scrub)
最后,我想写下:
some_name = params[:name].scrub.presence || 'nobody'
这将为nil:NilClass带来nil.scrub=>未定义的方法'scrub'
最后我写道:
some_name = 'nobody' unless params[:name].is_a?(String)
some_name = params[:name].scrub.presence || 'nobody'
我很困惑,我想要更简单的代码
编辑:没有像NilClassscrub、Fixnumscrub、Arrayscrub这样的方法,只有Stringscrub。使用:
或者使用“尝试”:
使用:
或者使用“尝试”:
因此,在这种情况下,您可以使用try:
some_name = params[:name].try(:scrub).presence || 'nobody'
因此,在这种情况下,您可以使用try:
some_name = params[:name].try(:scrub).presence || 'nobody'
@bjhaid的评论,params[:name]。是否答复?:擦洗?params[:name]:“没人”让我想到:
name = params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name]
@name = name.presence || 'nobody'
谢谢。@bjhaid的评论,params[:name]。回复?:擦洗?params[:name]:“没人”让我想到:
name = params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name]
@name = name.presence || 'nobody'
谢谢。另一种解决方案:
我创造了很棒的磨砂宝石
这就实现了,
之前:
name = params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name]
@name = name.presence || 'nobody'
之后:
@name = awesome_scrub(params[:name]).presence || 'nobody'
另一个解决方案:
我创造了很棒的磨砂宝石
这就实现了,
之前:
name = params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name]
@name = name.presence || 'nobody'
之后:
@name = awesome_scrub(params[:name]).presence || 'nobody'
params[:name]| | |“nobody”有什么问题?请检查:| | nobodyparams[:name]。是否响应?:清除?params[:name]:“nobody”params[:name]| | |“nobody”有什么问题吗?检查此项:| | nobodyparams[:name]。响应?:擦洗?参数[:名称]:“无人”