質問編集履歴

1

正規表現でのプログラムを追記しました。

2018/09/24 00:53

投稿

renji
renji

スコア41

test CHANGED
File without changes
test CHANGED
@@ -41,3 +41,83 @@
41
41
  やはり、s_2の中の数値を表す文字をあらたなint型の配列に変換しておさめていき、その数字が0から1999の範囲内である、という調べ方しかないのでしょうか?
42
42
 
43
43
  よろしくお願いします。
44
+
45
+
46
+
47
+
48
+
49
+ ---追記---
50
+
51
+
52
+
53
+ 正規表現を使って、上の問題のプログラムを作ってみました。
54
+
55
+ ```ここに言語を入力
56
+
57
+ import java.util.*;
58
+
59
+ import java.util.regex.Pattern;
60
+
61
+ import java.util.regex.Matcher;
62
+
63
+
64
+
65
+ public class main{
66
+
67
+ public static void main(String[] args){
68
+
69
+ String S = "1111s0123s0124s0214s0124";
70
+
71
+
72
+
73
+ Pattern p = Pattern.compile("[0-1]{1}[0-9]{3}s[0-1]{1}[0-9]{3}s[0-1]{1}[0-9]{3}s[0-1]{1}[0-9]{3}s[0-1]{1}[0-9]{3}");
74
+
75
+ Matcher m = p.matcher(S);
76
+
77
+
78
+
79
+ System.out.println(m.find());
80
+
81
+ }
82
+
83
+ }
84
+
85
+ ```
86
+
87
+ というようになりました。
88
+
89
+ ```ここに言語を入力
90
+
91
+ String S = "1111s0123s0124s0214s0124";
92
+
93
+ ```
94
+
95
+ のところなのですが、すべての数字の部分を4桁表示にしないとうまくいきませんでした。
96
+
97
+ (Pattern p = Pattern.compileの正規表現チェックで、すべて0000~1999を調べているので)
98
+
99
+
100
+
101
+ ```ここに言語を入力
102
+
103
+ String S = "1111s123s124s214s124";
104
+
105
+ ```
106
+
107
+ 上のような4桁と3桁の数字の混ざった文字列の場合、
108
+
109
+ 一旦、sで区切った文字をsplit("s")してから、何桁か調べて、その桁数によって、
110
+
111
+ ```ここに言語を入力
112
+
113
+ Pattern p = Pattern.compile
114
+
115
+ ```
116
+
117
+ で調べる方法を複数用意するのが良いのかなと思いました。
118
+
119
+
120
+
121
+ 質問時には、数値変換してからチェックする、以外の方法は思いつきませんでしたが、知識の深い方からのアドバイスにより、正規表現でのチェックという方法があると知り、上のようなプログラムを作り、一応、ここに念のため、記させていただきました。
122
+
123
+ 以上となります。