回答編集履歴

4

parse_ranking_number の実装行数を削減

2020/07/27 12:19

投稿

gouf
gouf

スコア2321

test CHANGED
@@ -46,49 +46,21 @@
46
46
 
47
47
  # 順位の全角数字 (1 〜 9位) を半角に変換
48
48
 
49
- def parse_ranking_number(str)
49
+ def parse_ranking_number(char)
50
50
 
51
- case str
51
+ trigger_pattern = %w[1 2 3 4 5 6 7 8 9]
52
52
 
53
- when '1'
54
53
 
55
- 1
56
54
 
57
- when '2'
55
+ case char
58
56
 
59
- 2
57
+ when *trigger_pattern
60
58
 
61
- when '3'
59
+ trigger_pattern.index(char).succ
62
-
63
- 3
64
-
65
- when '4'
66
-
67
- 4
68
-
69
- when '5'
70
-
71
- 5
72
-
73
- when '6'
74
-
75
- 6
76
-
77
- when '7'
78
-
79
- 7
80
-
81
- when '8'
82
-
83
- 8
84
-
85
- when '9'
86
-
87
- 9
88
60
 
89
61
  else
90
62
 
91
- str.to_i
63
+ char.to_i
92
64
 
93
65
  end
94
66
 

3

コメント内容の修正

2020/07/27 12:19

投稿

gouf
gouf

スコア2321

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- # 順位, 大学名, 在籍者数を正規表現で抜き出し
31
+ # 正規表現で、順位, 大学名, 在籍者数を含む文字列を抜き出し
32
32
 
33
33
  def extract_universities(html)
34
34
 

2

コードの処理について コメントを追記

2020/07/27 04:44

投稿

gouf
gouf

スコア2321

test CHANGED
@@ -28,6 +28,8 @@
28
28
 
29
29
 
30
30
 
31
+ # 順位, 大学名, 在籍者数を正規表現で抜き出し
32
+
31
33
  def extract_universities(html)
32
34
 
33
35
  regexp = /([0-91234567890]{1,3}位:[○ ● ▲ ◆][^)]+))/
@@ -41,6 +43,8 @@
41
43
  end
42
44
 
43
45
 
46
+
47
+ # 順位の全角数字 (1 〜 9位) を半角に変換
44
48
 
45
49
  def parse_ranking_number(str)
46
50
 
@@ -91,6 +95,8 @@
91
95
  end
92
96
 
93
97
 
98
+
99
+ # 順位, 大学名, 在籍者数を含む文字列をそれら要素ごとに分解して Hash に纏める
94
100
 
95
101
  def parse_to_hash(universities_info_list)
96
102
 

1

修正: nokogiri の require 行を追記

2020/07/27 04:42

投稿

gouf
gouf

スコア2321

test CHANGED
@@ -7,6 +7,10 @@
7
7
 
8
8
 
9
9
  ```ruby
10
+
11
+ require 'nokogiri'
12
+
13
+
10
14
 
11
15
  html = <<EOF
12
16