回答編集履歴

2

追記

2021/11/12 06:03

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -57,3 +57,51 @@
57
57
  ```
58
58
 
59
59
  コメントの中に class や import などがあると誤認識します。
60
+
61
+
62
+
63
+ **追記**
64
+
65
+ import で名前に `*` を含めるため、useDelimiter の引数を変更しました。また、
66
+
67
+ 見つかった名前を ArrayList にため込まず、その場で表示するようにしました。
68
+
69
+ ```java
70
+
71
+ //package abc.def.ghi
72
+
73
+
74
+
75
+ import java.util.*; // List, Arrays, Scanner
76
+
77
+ import java.io.File;
78
+
79
+
80
+
81
+ public class Main {
82
+
83
+ public static void main(String[] args) throws Exception {
84
+
85
+ String fname = "Main.java";
86
+
87
+ String[] sa = { "class", "package", "import" }; // string array
88
+
89
+ List<String> sl = Arrays.asList(sa); // string list
90
+
91
+ Scanner sc = new Scanner(new File(fname));
92
+
93
+ sc.useDelimiter("[^\w.*\"]+|\"[^\"]*\"");
94
+
95
+ while (sc.hasNext()) {
96
+
97
+ String s = sc.next();
98
+
99
+ if (sl.contains(s)) System.out.println(s + " : " + sc.next());
100
+
101
+ }
102
+
103
+ }
104
+
105
+ }
106
+
107
+ ```

1

コードの修正

2021/11/12 06:03

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  Scanner sc = new Scanner(new File(fname));
20
20
 
21
- sc.useDelimiter("([^\w\.\"]+)|(\"[^\"]*\")");
21
+ sc.useDelimiter("[^\w\.\"]+|\"[^\"]*\"");
22
22
 
23
23
  ArrayList<String> c_name = new ArrayList<>();
24
24