2013-07-11 2 views
1

자바에서 regex를 사용하여 문자열의 마지막 6 자리를 찾는 방법은 무엇입니까? 238428342938492834823자바에서 regex를 사용하여 문자열의 마지막 6 자리를 찾는 방법은 무엇입니까?

내가 상관없이 문자열의 길이가 무엇인지, 마지막 6 개 자리를 발견하지 문자열을 갖고 싶어 :

는 예를 들어, 내가 문자열을 가지고있다. 나는 성공한 "/d{6}$"을 시도했다.

어떤 제안이나 새로운 아이디어가 있습니까?

+1

왜 당신이 그것을 위해 정규식을 사용? –

+1

^네가'string.length()'를하고 그 중 6을 빼면 .. –

+0

@RohitJain 그는 숫자가 아닌 문자열을 말하고있다. – Anirudha

답변

5

방금 ​​잘못된 이스케이프 문자를 사용했습니다. \d{6}은 6 자리 숫자와 일치하고 /d은 6 자 리터럴 d의 문자순 슬래시와 일치합니다.

패턴은 다음과 같아야합니다

String pattern = "\\d{6}$"; 
2

다른 대답에 정규식 솔루션을 제공합니다

물론
\d{6}$ 

있도록, 자바, 당신은 또한 \을 탈출해야 이 문제는, 그러나 정규식은 문제에 대한 합리적인 해결책이 아닙니다. 당신은 자신이 문제를 해결하기 위해 정규식을 사용하려고 찾으면

if (text.length >= 6) { 
    return text.substring(text.length - 6); 
} 

, 당신이해야 할 첫 번째 일은 중지하고 당신이 정규식은 좋은 해결책이라고 생각하는 이유에 대한 좋은 생각을 가지고있다.

0

문자열이 항상 숫자만으로 구성되는 경우 다른 데이터 형식을 사용해야합니다.

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 
0

이 한 줄에 그것을 할 방법은 다음과 같습니다 지구에

String last6 = str.replaceAll(".*(.{6})", "$1"); 
관련 문제