如何在java中使用正则表达式找到字符串的后六位数?
例如,我有一个字符串:238428342938492834823
无论字符串的长度是多少,我想要只找到最后6位的字符串。我试过"/d{6}$"
没有成功。
有任何建议或新想法吗?
答案 0 :(得分:5)
你刚刚使用了错误的转义字符。 \d{6}
匹配六位数,而/d
匹配文字正斜杠,后跟六个文字d
。
模式应为:
\d{6}$
当然,在Java中,您还必须转义\
,以便:
String pattern = "\\d{6}$";
答案 1 :(得分:2)
另一个答案为您提供了解决此问题的正则表达式解决方案,但正则表达式不是解决问题的合理方法。
if (text.length >= 6) {
return text.substring(text.length - 6);
}
如果你发现自己试图使用正则表达式来解决问题,那么你应该做的第一件事就是停下来并好好思考为什么你认为正则表达式是一个很好的解决方案。
答案 2 :(得分:0)
如果您的String总是只包含数字,则应考虑使用其他数据类型。
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
答案 3 :(得分:0)
这就是你在一行中的表现:
String last6 = str.replaceAll(".*(.{6})", "$1");