アプリ版:「スタンプのみでお礼する」機能のリリースについて

Java実行時の引数として渡された値を元に、
「もし引数が0~9の値“ではない”場合は」というif文を作成したいのですが、
下記の記述だと、引数の最初の文字しか判定されていないようです。

if (args[0].matches("[^0-9]+")

引数の全ての文字が「0~9の値“ではない”」とするには、
どのように指定すれば宜しいでしょうか?

A 回答 (5件)

> 引数の全ての文字が「0~9の値“ではない”」



→ ∀x{¬isdigit(x)}≡¬{∃x・isdigit(x)} ここでisdigit(x)は文字xが数字かどうかを表す述語。

――ってことで、数字があるかをチェックすればよいのでは。

http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%BB% …

> .matches("[^0-9]+")

^と$をくっつけるという手も。

この回答への補足

ありがとうございます。

すみません。

> ^と$をくっつけるという手も

これが具体的にどういうものなのか分かりませんでした。

補足日時:2011/10/17 22:45
    • good
    • 0
この回答へのお礼

度々です。

実現したいのは、

if(0~9の値“ではない”)

です。

0~9の値“ではない”時に、trueとなってくれるとうれしいです。

お礼日時:2011/10/17 22:49

日本語難しいね(^^;


具体例書くといいですよ。

引数の全ての文字が「0~9の値“ではない”」とは
0
12
0a
a
aaa
どれが該当して、どれは該当しないの?

とりあえず、いくつかパターン作ってみたので、お好みのを選んでください。
[^0-9]:0:false
[^0-9]:12:false
[^0-9]:0a:false
[^0-9]:a:true
[^0-9]:aaa:false

[^0-9]+:0:false
[^0-9]+:12:false
[^0-9]+:0a:false
[^0-9]+:a:true
[^0-9]+:aaa:true

.*[^0-9].*:0:false
.*[^0-9].*:12:false
.*[^0-9].*:0a:true
.*[^0-9].*:a:true
.*[^0-9].*:aaa:true

あと、(引数の全て)の文字が「0~9の値“ではない”」場合はループしないと無理です。
    • good
    • 1

String#matches()では文字列全体と一致させようとするから、[^0-9]+ で問題ないように思えます。



http://www.ideone.com/xlbgJ

> 下記の記述だと、引数の最初の文字しか判定されていないようです。

なんかそんなこともなさそうな。自分が前提条件を間違えてるだけかもしれませんが。
    • good
    • 0

ありゃ、matches()の仕様を勘違いしてた。

こんなかんじじゃなきゃだめみたい:

http://www.ideone.com/U9aw3
    • good
    • 0

! 使えばいいじゃん, と #1 は言っている. 完全に同意.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!