[java] 문자열 크기에 관계없이 Java에서 문자열의 마지막 문자를 얻는 방법

크기에 관계없이 문자열에서 마지막 문자를 가져 오는 방법을 찾고 있습니다. 다음 문자열을 예로 들어 보겠습니다.

"abcd: efg: 1006746"
"bhddy: nshhf36: 1006754"
"hfquv: nd: 5894254"

보시다시피 완전히 임의의 문자열이지만 끝에 7 개의 숫자가 있습니다. 7 개의 숫자를 어떻게 얻을 수 있을까요?

편집하다:

나는 String[] string = s.split(": ");숫자에 대해 string [2]를 호출하고 중간에있는 것에 대해서는 string [1]을 호출하는 한 그것이 여기서 훌륭하게 작동 한다는 것을 깨달았습니다 .



답변

할 수있는 일이 많습니다.

s.substring(s.lastIndexOf(':') + 1);

마지막 콜론 이후의 모든 것을 얻습니다.

s.substring(s.lastIndexOf(' ') + 1);

마지막 공간 이후의 모든 것.

String numbers[] = s.split("[^0-9]+");

모든 숫자 시퀀스를 분리합니다. 숫자 배열의 마지막 요소는 아마도 원하는 것입니다.


답변

어때 :

String numbers = text.substring(text.length() - 7);

즉이 있다고 가정 이다 (7 개) 문자는 물론, 마지막에. “12345”를 전달하면 예외가 발생합니다. 다음과 같이 해결할 수 있습니다.

String numbers = text.substring(Math.max(0, text.length() - 7));

또는

String numbers = text.length() <= 7 ? text : text.substring(text.length() - 7);

이것은 결과 문자열에 숫자가 포함되어 있다는 유효성 검사를 수행하지 않으며 textnull 인 경우에도 예외 가 발생합니다 .


답변

이 질문은 “Java String Right”에 대한 Google의 상위 결과입니다.

놀랍게도 아무도 아직 Apache Commons StringUtils.right ()에 대해 언급하지 않았습니다 .

String numbers = org.apache.commons.lang.StringUtils.right( text, 7 );

이것은 또한 text다른 많은 답변이 NullPointerException을 던지는 경우 가 null 인 경우를 처리합니다 .


답변

이 코드는 완벽하게 작동합니다.

String numbers = text.substring(Math.max(0, text.length() - 7));


답변

다음 한 줄 코드를 사용하여 달성 할 수 있습니다 .

String numbers = text.substring(text.length() - 7, text.length());

그러나 입력 문자열 길이가 7 미만인 경우 예외포착 해야합니다 .

마지막 ‘N’문자를 얻으려면 7을 N과 같은 숫자로 바꿀 수 있습니다.


답변

String.split또는 정규식을 사용합니다 .


String.split 사용

String[] numberSplit = yourString.split(":") ;
String numbers = numberSplit[ (numberSplit.length-1) ] ; //!! last array element

RegEx 사용 (필요 import java.util.regex.*)

String numbers = "" ;
Matcher numberMatcher = Pattern.compile("[0-9]{7}").matcher(yourString) ;
    if( matcher.find() ) {
            numbers = matcher.group(0) ;
    }


답변

String inputstr = "abcd: efg: 1006746"
int startindex = inputstr.length() - 10;
String outputtendigitstr = inputstr.substring(startindex);

문자열 길이가 10 이상인지 확인하십시오.