2016-12-08 8 views
0

int配列に変換できる場合は、文字列引数を検証する必要があります。Regex for int配列

String pattern = "(\\d+[,])+"; 
String test = "18,32,5,8,10"; 

test2.matches(pattern2) //returns false as i requires , in the end 

最後無視するどのような方法があります ''

答えて

3

私は正規表現を使用する方法を知っていると場合ないので

\\d+(?:,\\d+)+ 
+1

はい。今度は、 '\\ d +(?:、\\ d +)+'は正しい選択です – TheLostMind

+0

こんにちは@hwnd、これはtest = "18"のような単一の値では失敗しています – hacker

+0

' * '...'(?:、\\ d +)* ' – hwnd

0

この正規表現は、あなたのために動作します( "有効な配列" をチェック):

public static void main(String[] args) { 
    String s = "18,32,5,8,10"; 
    System.out.println(s.matches("(?!.*,$)(?!,.*$)(\\d+(?:,|$))+")); 
} 

確認とのために失敗します。

  1. 複数の連続するカンマ
  2. コンマの先頭
  3. 終わりにコンマ
0

...数字は(,桁)が続くべきであることを指定するには、グループの構造を使用します私は、あなたの場所にあった私が見ることができる任意ののparseInt()メソッドはのtry-catch aに包まれなければならないに呼び出すことこれであるならば、これは、このコードでそう

String test = "18,32,5,8,10"; 
String str[]=test.split(","); 
int ar[] = new int[str.length]; 
for(int i = 0; i<ar.length; i++){ 
    ar[i] = Integer.parseInt(str[i]); 
} 

問題を行うには私の方法だっただろう文字列に数字とカンマ(、)以外の値が含まれる場合、NumberFormatExceptionがスローされます。