Javaの質問です。
boolean TRUE = false; String S = 1111s334s124s214s124;
というプログラムで、数字を含んだ文字列があった場合、sで区切られた文字列の中の数字が、すべて0以上1999以下の数字である、ということを調べたいです。
String[] S2 = S.split("s");
として、配列に分配後に
for(String s_2 : S2){ if(s_2.equals([0-1999]){ TRUE = true; }else{ TRUE = false; } }
という感じでするのですが、(s_2.equals([0-1999])ではうまくいきません。
やはり、s_2の中の数値を表す文字をあらたなint型の配列に変換しておさめていき、その数字が0から1999の範囲内である、という調べ方しかないのでしょうか?
よろしくお願いします。
---追記---
正規表現を使って、上の問題のプログラムを作ってみました。
import java.util.*; import java.util.regex.Pattern; import java.util.regex.Matcher; public class main{ public static void main(String[] args){ String S = "1111s0123s0124s0214s0124"; 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}"); Matcher m = p.matcher(S); System.out.println(m.find()); } }
というようになりました。
String S = "1111s0123s0124s0214s0124";
のところなのですが、すべての数字の部分を4桁表示にしないとうまくいきませんでした。
(Pattern p = Pattern.compileの正規表現チェックで、すべて0000~1999を調べているので)
String S = "1111s123s124s214s124";
上のような4桁と3桁の数字の混ざった文字列の場合、
一旦、sで区切った文字をsplit("s")してから、何桁か調べて、その桁数によって、
Pattern p = Pattern.compile
で調べる方法を複数用意するのが良いのかなと思いました。
質問時には、数値変換してからチェックする、以外の方法は思いつきませんでしたが、知識の深い方からのアドバイスにより、正規表現でのチェックという方法があると知り、上のようなプログラムを作り、一応、ここに念のため、記させていただきました。
以上となります。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/23 09:08