gpt4 book ai didi

Ruby-查找包含数组中字母的字符串

转载 作者:数据小太阳 更新时间:2023-10-29 07:34:39 25 4
gpt4 key购买 nike

我到处搜索,似乎无法找到我正在寻找的示例。我正在尝试学习 ruby ,并且正在编写一个简单的脚本。提示用户输入加载到数组中的字母。该脚本然后遍历一个包含一堆单词的文件,并提取出包含数组中内容的单词。我的问题是,如果单词按数组的顺序排列,它只会将它们拉出来。例如……

characterArray = Array.new;
puts "Enter characters that the password contains";
characters = gets.chomp;
puts "Searching words containing #{characters}...";

characterArray = characters.scan(/./);
searchCharacters=characterArray[0..characterArray.size].join;

File.open("dictionary.txt").each { |line|
if line.include?(searchCharacters)
puts line;
end
}

如果我要使用此代码并输入“dog”脚本会返回狗小狗

但我需要输出返回单词,即使它们的顺序不同。喜欢...狗狗罗奇

抱歉代码草率。就像我说的还在学习。感谢您的帮助。

附言。我也试过这个...

File.open("dictionary.txt").each { |line| 
if line =~ /[characterArray[0..characterArray.size]]/
puts line;
end
}

但这会返回包含用户输入的任何字母的所有单词

最佳答案

首先,您不需要自己创建characterArray。当您将函数的结果分配给一个新变量时,它会在没有它的情况下工作。

在您的代码中,字符 将是例如“asd”。 characterArray 将是 ["a", "s", "d"]。 searchCharacters 将再次变为“asd”。看来你不需要这种转换。

characterArray[0..characterArray.size] 正好等于 characterArray

您可以使用each_char 迭代器来遍历字符串的字符。我建议这样做:

puts "Enter characters that the password contains";
characters = gets.chomp;

File.open("dictionary.txt").each { |line|
unless characters.each_char.map { |c| line.include?(c) }.include? false
puts line;
end
}

我已经检查过它是否正常工作。在我的代码中,我创建了一个数组:

characters.each_char.map  { |c| line.include?(c) }

此数组的值将指示:true - 在 line 中找到的字符,false - 未找到的字符。此数组的长度等于 characters 中的字符数。如果没有 false 值,我们将认为 line 是好的。

关于Ruby-查找包含数组中字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10574014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com