如何在Ruby中验证只包含特定alpha字符的字符串?
我试图确定输入字符串是否只包含字符G、C、T或A。提供的字符串可以包含任意数量的字符,顺序可以任意。如果字符串包含除指定字符以外的任何字符,我应返回“” 我见过几种解决方案,其中我可以验证字符串只包含数字或字母,但如何在执行代码块之前验证字符串只包含特定的alpha字符 例如:如何在Ruby中验证只包含特定alpha字符的字符串?,ruby,Ruby,我试图确定输入字符串是否只包含字符G、C、T或A。提供的字符串可以包含任意数量的字符,顺序可以任意。如果字符串包含除指定字符以外的任何字符,我应返回“” 我见过几种解决方案,其中我可以验证字符串只包含数字或字母,但如何在执行代码块之前验证字符串只包含特定的alpha字符 例如: 输入_1=“C” 结果_1=运行代码块 输入_2=“acgtxxxctaa” 结果_2=不运行代码块 您可以使用正则表达式进行检查-类似 puts 'run code' if 'C' =~ /^[GCTA]+$/ 其
- 输入_1=“C”
- 结果_1=运行代码块
- 输入_2=“acgtxxxctaa”
- 结果_2=不运行代码块
puts 'run code' if 'C' =~ /^[GCTA]+$/
其中:
^ = start of line
$ = end of line
[] = match any character within
+ = one or more of previous
这可能是您正在寻找的解决方案
"C".match(/^[GCTA]+$/) => #<MatchData "C">
"ACGTXXXCTTAA".match(/^[GCTA]+$/) => nil
“C”。匹配(/^[GCTA]+$/)=>#
“acgtxxxctaa”。匹配(/^[GCTA]+$/)=>nil
带正则表达式
它表示从字符串开头到结尾的任何连续的“G”、“C”、“T”或“A”
如果可以接受空字符串,则可以使用/\A[GCTA]*\z/
使用字符串#delete
您还可以使用删除每个“G”、“C”、“T”和“A”,并检查字符串是否变为空:
"C".delete("GCTA").empty? #=> true
"ACGTXXXCTTAA".delete("GCTA").empty? #=> false
"ACGTCTTAA".delete("GCTA").empty? #=> true
"".delete("GCTA").empty? #=> true
非regexp答案:
nucleic_acid_sequence = ['G','C','T','A']
test_input = 'GFWG'
unless (test_input.chars-nucleic_acid_sequence).any?
puts 'valid input!'
end
请坐飞机。你试过什么?我不知道ruby,但因为它不被认为是一种深奥的语言,如果你对你正在做的事情有任何线索,这应该很简单。那么“ACGTXXX\nCTTAA”呢?那么最好使用“ACGTXXX\nCTTAA”。match(/\A[GCTA]+\z/)编辑的答案允许多个字符当没有匹配时,此返回
nil
,这可能是个好主意,即使OP要求在没有匹配项时返回空字符串。
nucleic_acid_sequence = ['G','C','T','A']
test_input = 'GFWG'
unless (test_input.chars-nucleic_acid_sequence).any?
puts 'valid input!'
end