You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ruby检测文件中指定单词是否重复出现两次

检测大文件中单词是否出现两次的Ruby实现

针对你的需求,下面提供两种完善后的代码方案,分别对应完整单词匹配和子字符串匹配场景,同时兼顾大文件的内存效率:

方案1:完整单词匹配(推荐,避免子串误匹配)

该方案严格匹配独立单词,比如不会把"apples"中的"apple"算作一次匹配:

puts "Enter a word: "
target_word = gets.chomp.downcase # 若需区分大小写,移除.downcase

count = 0
File.foreach('worldcountry.txt') do |line|
  line_words = line.downcase.split # 区分大小写则移除.downcase
  line_words.each do |word|
    count += 1 if word == target_word
    # 计数达标后立即终止程序,无需读取剩余内容
    if count >= 2
      puts "单词 '#{target_word}' 出现了至少两次"
      exit
    end
  end
end

# 遍历完文件后判断结果
puts "单词 '#{target_word}' 出现不足两次" if count < 2

方案2:子字符串匹配

如果需要统计目标单词作为子字符串的出现次数(比如"cat"在"category"中也算一次),可以用这个方案:

puts "Enter a word: "
target_word = gets.chomp.downcase # 区分大小写则移除.downcase

count = 0
File.foreach('worldcountry.txt') do |line|
  # 统计当前行中目标单词的出现次数
  count += line.downcase.scan(target_word).size
  if count >= 2
    puts "单词 '#{target_word}' 出现了至少两次"
    exit
  end
end

puts "单词 '#{target_word}' 出现不足两次" if count < 2

关键优化点

  • 使用File.foreach逐行读取文件,不会一次性加载整个大文件到内存,避免内存溢出
  • 计数达到2时立即退出程序,减少不必要的IO操作,提升效率
  • 替换全局变量$word为局部变量target_word,符合Ruby编码规范
  • 可选的大小写忽略处理,可根据实际需求调整

内容的提问来源于stack exchange,提问作者carl Bloid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:10:36