質問編集履歴
1
正規表現でのプログラムを追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,4 +19,44 @@
|
|
19
19
|
```
|
20
20
|
という感じでするのですが、(s_2.equals([0-1999])ではうまくいきません。
|
21
21
|
やはり、s_2の中の数値を表す文字をあらたなint型の配列に変換しておさめていき、その数字が0から1999の範囲内である、という調べ方しかないのでしょうか?
|
22
|
-
よろしくお願いします。
|
22
|
+
よろしくお願いします。
|
23
|
+
|
24
|
+
|
25
|
+
---追記---
|
26
|
+
|
27
|
+
正規表現を使って、上の問題のプログラムを作ってみました。
|
28
|
+
```ここに言語を入力
|
29
|
+
import java.util.*;
|
30
|
+
import java.util.regex.Pattern;
|
31
|
+
import java.util.regex.Matcher;
|
32
|
+
|
33
|
+
public class main{
|
34
|
+
public static void main(String[] args){
|
35
|
+
String S = "1111s0123s0124s0214s0124";
|
36
|
+
|
37
|
+
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}");
|
38
|
+
Matcher m = p.matcher(S);
|
39
|
+
|
40
|
+
System.out.println(m.find());
|
41
|
+
}
|
42
|
+
}
|
43
|
+
```
|
44
|
+
というようになりました。
|
45
|
+
```ここに言語を入力
|
46
|
+
String S = "1111s0123s0124s0214s0124";
|
47
|
+
```
|
48
|
+
のところなのですが、すべての数字の部分を4桁表示にしないとうまくいきませんでした。
|
49
|
+
(Pattern p = Pattern.compileの正規表現チェックで、すべて0000~1999を調べているので)
|
50
|
+
|
51
|
+
```ここに言語を入力
|
52
|
+
String S = "1111s123s124s214s124";
|
53
|
+
```
|
54
|
+
上のような4桁と3桁の数字の混ざった文字列の場合、
|
55
|
+
一旦、sで区切った文字をsplit("s")してから、何桁か調べて、その桁数によって、
|
56
|
+
```ここに言語を入力
|
57
|
+
Pattern p = Pattern.compile
|
58
|
+
```
|
59
|
+
で調べる方法を複数用意するのが良いのかなと思いました。
|
60
|
+
|
61
|
+
質問時には、数値変換してからチェックする、以外の方法は思いつきませんでしたが、知識の深い方からのアドバイスにより、正規表現でのチェックという方法があると知り、上のようなプログラムを作り、一応、ここに念のため、記させていただきました。
|
62
|
+
以上となります。
|