我正在尝试删除多次具有相同字母的单词。我试过挤压,但所有这一切都是删除彼此相邻的重复字母的单词。
目前的代码如下:
array = []
File.open('word.txt').each do |line|
if line.squeeze == line
array << line
end
end
从word.txt输入
start
james
hello
joins
regex
我正在寻找的输出
james
joins
关于我如何解决这个问题的任何建议。
答案 0 :(得分:2)
也许是这样的:
array = []
File.open('word.txt').each do |line|
chars = line.chars
array << line if chars.uniq == chars
end
或更短:
array = File.open('word.txt').select { |word| word.chars.uniq == word.chars }
答案 1 :(得分:1)
您可以使用正则表达式,例如:
re = /
(.) # match and capture a single character
.*? # any number of characters in-between (non-greedy)
\1 # match the captured character again
/x
示例:
'start'[re] #=> "tart"
'james'[re] #=> nil
'hello'[re] #=> "ll"
'joins'[re] #=> nil
'regex'[re] #=> "ege"
可以传递给grep
以返回所有匹配的行:
IO.foreach('word.txt').grep(re)
#=> ["start\n", "hello\n", "regex\n"]
或grep_v
返回其他行:
IO.foreach('word.txt').grep_v(re)
#=> ["james\n", "joins\n"]