자바에서 regex를 사용하여 문자열의 마지막 6 자리를 찾는 방법은 무엇입니까? 238428342938492834823
자바에서 regex를 사용하여 문자열의 마지막 6 자리를 찾는 방법은 무엇입니까?
내가 상관없이 문자열의 길이가 무엇인지, 마지막 6 개 자리를 발견하지 문자열을 갖고 싶어 :
는 예를 들어, 내가 문자열을 가지고있다. 나는 성공한 "/d{6}$"
을 시도했다.
어떤 제안이나 새로운 아이디어가 있습니까?
자바에서 regex를 사용하여 문자열의 마지막 6 자리를 찾는 방법은 무엇입니까? 238428342938492834823
자바에서 regex를 사용하여 문자열의 마지막 6 자리를 찾는 방법은 무엇입니까?
내가 상관없이 문자열의 길이가 무엇인지, 마지막 6 개 자리를 발견하지 문자열을 갖고 싶어 :
는 예를 들어, 내가 문자열을 가지고있다. 나는 성공한 "/d{6}$"
을 시도했다.
어떤 제안이나 새로운 아이디어가 있습니까?
방금 잘못된 이스케이프 문자를 사용했습니다. \d{6}
은 6 자리 숫자와 일치하고 /d
은 6 자 리터럴 d
의 문자순 슬래시와 일치합니다.
패턴은 다음과 같아야합니다
이String pattern = "\\d{6}$";
다른 대답에 정규식 솔루션을 제공합니다
물론\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
이 한 줄에 그것을 할 방법은 다음과 같습니다 지구에
String last6 = str.replaceAll(".*(.{6})", "$1");
왜 당신이 그것을 위해 정규식을 사용? –
^네가'string.length()'를하고 그 중 6을 빼면 .. –
@RohitJain 그는 숫자가 아닌 문자열을 말하고있다. – Anirudha