我目前正在与Jekyll一起制作我的博客。 Jekyll自定义插件使用Ruby和Jekyll使用Liquid。我目前正在通过自定义液体标签获取输入并在那里进行处理。我想检查字符串是否包含整数。所以我有以下代码。我意识到输入不是String类型,而是Jekyll :: Token类型。所以我将输入更改为字符串,但我无法检测字符串是否包含整数。这是我的代码:
module Jekyll
class TypecheckTag < Liquid::Tag
def is_int(word)
return word.count("0-3000") > 0
end
def initialize(tag_name, word, tokens)
super
@word = word.to_s
end
def render(context)
if /\A\d+\z/.match(@word)
@result = 'int'
else
@result = 'string'
end
end
end
end
Liquid::Template.register_tag('typecheck', Jekyll::TypecheckTag)
不幸的是,它总是返回&#39; string&#39;说即使我们有一个字符串&#34; 16&#34;例如。
答案 0 :(得分:0)
以下代码可以正常使用
def render(input_str)
if /\A[-+]?\d+\z/.match(input_str.strip)
@result = 'int'
else
@result = 'string'
end
end
带输出的示例输入
p render('16') # "int"
p render('16a') # "string"
p render('16 ') # "int"
p render('asd') #"string"
p render('') #"string"
我使用strip
因为render('16 ') # "int"
如果您不想忽略它。希望它会对你有所帮助。