あなたは、2つの別々の問題を抱えて:
- ユーザー入力に基づいて正規表現を作成し、RTFファイルの読み取りと書き込み、それを数字
- のリストを解析するためにそれを使用します。
第一ステップ
当選番号の配列を取得するには、文字列内のすべての番号を見つけるために、scan続いgets
を使用することができます。
受賞番号の配列をお持ちの場合は、join('|')
を使用して正規表現を作成できます。ファイル内に3
が常に03
と書かれていると確信できる場合は、必要に応じてすべての数値に0を1つ追加することができます。rjust
。
正規表現の先頭と末尾に\b
を追加してください。/23/
は、それ以外の場合は123
と一致します。とにかく3桁の数字はないはずですが、まだいくつかのバグを避けることができます。
gsubの各入賞番号の後にティックを追加し、ティック数をsort行追加することができます。
file_content = "18 19 37 21 39 29 39
22 33 83 29 92 03 12
83 74 56 29 34 94 92
94 72 57 65 38 85 95
18 26 37 28 39 29 39
22 33 83 29 92 03 12
83 74 56 29 34 94 92
94 72 57 65 38 85 95
18 26 37 28 39 29 39
22 33 83 29 92 03 12
83 74 56 29 34 94 92
94 72 57 65 38 85 95
18 26 37 28 39 29 39
22 33 83 29 92 03 12
83 74 56 29 34 94 92
94 72 57 65 38 85 95
18 26 37 28 39 29 39
22 33 83 29 92 03 12
83 74 56 29 34 94 92
94 72 57 65 38 85 95"
puts "Please input winning numbers, separated by a space. Example : 1 2 3 4 5 6 7"
numbers = gets.chomp.scan(/\d+/).map{|d| d.rjust(2,'0')}
puts
regex = /(\b#{numbers.join('|')}\b)/
puts file_content.gsub(regex,'\1✓').each_line.sort_by{|l| l.count('✓')}.reverse
これは、出力:
18✓ 19✓ 37 21✓ 39✓ 29✓ 39✓
18✓ 26 37 28 39✓ 29✓ 39✓
18✓ 26 37 28 39✓ 29✓ 39✓
18✓ 26 37 28 39✓ 29✓ 39✓
18✓ 26 37 28 39✓ 29✓ 39✓
83 74 56 29✓ 34 94 92
22 33 83 29✓ 92 03 12
22 33 83 29✓ 92 03 12
83 74 56 29✓ 34 94 92
83 74 56 29✓ 34 94 92
22 33 83 29✓ 92 03 12
22 33 83 29✓ 92 03 12
83 74 56 29✓ 34 94 92
83 74 56 29✓ 34 94 92
22 33 83 29✓ 92 03 12
94 72 57 65 38 85 95
94 72 57 65 38 85 95
94 72 57 65 38 85 95
94 72 57 65 38 85 95
94 72 57 65 38 85 95
第二ステップ
あなたのコードは、テキストファイルで正常に動作している場合、あなたはあなたの第二の問題に取り組むために行くことができます。
RTFに関連するプロジェクトはすべてかなり古く、まだ機能しているかどうかはわかりません。 Yomuかもしれません。
docxファイルの場合、docxというプロジェクトが役に立ちます。
また、Wordで読み取ることのできるHTMLファイルを作成することもできます。
あなたはコードを書いていますか? –
私はプログラマーではありません。私は何かを得るための基本を書いていました。 – codedownforwhat
問題ありません。既に何かを試したことを示す限り、コーディング能力に関係なく、コミュニティは喜んで助けてくれるでしょう。 –