2017-12-29 28 views
0

最初の0と1以外のすべての番号を取得するには、たとえば043241.124.22から43241.24.22を取得する必要があります。 私はコード1と0以外の一致する番号

Pattern p = Pattern.compile("[2-9]"); 
String[] split = number.split("\\.") 
String n = ""; 
Matcher m = p.matcher(split[0]) 
m.find(); 
n += split[0].substring(matchere.start()) + "." 
.... 

書かれているが、私はそれは、1つのまたは2つのライン

答えて

1

使用replaceAll()、他の数字をリードする0または1桁のスキャン、すなわち

  • 0または1桁:[01]
  • 桁が先行していない:(?<=^|\D)または(?<!\d)
  • 少なくとも1桁の数字が続きます。(?=\d)
  • 正規表現は、それらを見つけるため

は次のとおりです。(?<=^|\D)[01](?=\d)

Javaコードは次のとおりです。

String n = number.replaceAll("(?<=^|\\D)[01](?=\\d)", ""); 

がコードを操作するためのIDEONEを参照してください。

+0

@JNat先頭の '0'と' 1'の数字をすべて削除する必要がある場合は、 '[01]'の後に '+'を追加してください。あなたは '-22'を削除するためにどのようなルールを使用するのか分かりません。もしあなたが**正規表現**を学んだら、あなた自身でルールを定義することができます。 – Andreas

+0

はい、ありがとうございます –

0

あなたはループを使用する必要があることで行うことができると思います。これが役立つことを願っています。

Pattern p = Pattern.compile("[2-9]"); 
String[] split = number.split("\\."); 
String n = ""; 
for(int i=0;i<split.length;i++) 
{ 
Matcher m = p.matcher(split[i]); 
m.find(); 
n += split[i].substring(m.start())+"."; 

} 
System.out.println(n); 
+0

パターンp = Pattern.compile( "[2-9]")をパターン化するために組み合わせることができます。および String [] split = number.split( "\\。"); –

関連する問題