2012-12-11 11 views
5

文字列がテキストフィールドから取るかどうかを確認したい にはカンマがあり、それを削除してドットで新しい値を要求します。このカンマ(例えば1,5)を含む文字列に一致する

 ^[1-9,]+$  

は、トリックを行いますが、一方でまた、あなたが強制する必要はありません。1.

+0

'マッチ( "")'が悪いのか? – djechlin

+0

@djechlin 'matches'は文字列全体と一致する必要があります –

答えて

3

キャレット^は、テキストの先頭にマッチします。 [,]+は任意の数のカンマに一致します。何が必要なのあなたが探しているアイテムの前や後に、すべてを無視するものである:

^.*[,].*$ 

ドットは改行以外の任意の文字に一致します。 *は繰り返し(0 - 任意の数)です。

ここで文字列をトリミングする必要はありません。

10

のような数字に一致し、

iは

textTestAr.trim().matches("^[,]+$")  

を使用しようとするが、何も起こりませんこの問題に関する正規表現。シンプルでtextTestAr.indexOf(',')となります。

+0

私は同意しません。より良いマスターと 'indexOf'とお友達とこれまで以上に必要なツールをスティック。 – krlmlr

+5

@ user946850真のマスターは、すべての使用可能な楽器を均等な猶予で使用します。これがルビやperlの場合、正規表現ですべてを処理するのは慣用的ですが、Java正規表現ではファーストクラスの市民ではありません。 –

+0

コードの次の要件は、数字と1つのドットのみで構成されているかどうかを確認することですか?他の文字もチェックしたいのですか?または...正規表現を代替で変更しようとする試みを比較する:まず「シンプルな」ツールを使用する(一致するものが見つからなければ何が起こるか?-1?例外?APIを見てみよう...)とにかく "the"ツールが必要であることを示しています。 – krlmlr

1

最初の文字列は、文字列全体がコンマのみで構成されていることを示しています。 2番目の文字列は、文字列が数字(0以外)とカンマで構成されていると主張していますが、特定のものは必要ありません。 (彼らは暗黙的であるため)matchesを使用するときに^...$を必要としない

.*,.* 

注:あなたは、これを使用することができます。とにかく簡単なindexOfソリューションは、Markoやyentupの方が優れています。

3

はちょうどそのために正規表現を必要としないでください

0

textTestAr.contains(",")の操作を行います。

textTestAr.trim().replace(',','.'); 
4

だけで行う if(textTestAr.contains(",")) System.out.println("It does!");

0
public boolean hasComma(String string) { 
    if (string.indexOf(",") > -1) { 
     return true; 
    } 
    return false; 
} 
関連する問題