javaで正規表現を使用して文字列の最後の6桁を見つけるにはどうすればよいですか?
たとえば、次の文字列があります。238428342938492834823
文字列の長さに関係なく、最後の 6 桁のみを検索する文字列が必要です。私は"/d{6}$"
成功しませんでした。
提案や新しいアイデアはありますか?
間違ったエスケープ文字を使用しただけです。\d{6}
は 6 桁の数字に/d
一致し、リテラルのスラッシュの後に 6 つのリテラルd
の ' が続くものに一致します。
パターンは次のようになります。
\d{6}$
もちろん、Java では、次のように もエスケープする必要があります\
。
String pattern = "\\d{6}$";
他の答えは、この問題に対する正規表現の解決策を提供しますが、正規表現は問題に対する合理的な解決策ではありません。
if (text.length >= 6) {
return text.substring(text.length - 6);
}
正規表現を使用して問題を解決しようとしていることに気付いた場合、最初にすべきことは、停止して、正規表現が優れた解決策であると考える理由をよく考えることです。
文字列が常に数字だけで構成されている場合は、別のデータ型の使用を検討する必要があります。
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class Numberthings {
static final BigInteger NUMBER_1000000 = BigInteger.valueOf(1000000);
static final NumberFormat SIX_DIGITS = new DecimalFormat("000000");
public static void main(String[] args) {
BigInteger number = new BigInteger("238428342938492834823");
BigInteger result = number.remainder(NUMBER_1000000);
System.out.println(SIX_DIGITS.format(result.longValue()));
number = new BigInteger("238428342938492000003");
result = number.remainder(NUMBER_1000000);
System.out.println(SIX_DIGITS.format(result.longValue()));
}
}
これにより、次の出力が得られます。
834823
000003