[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);
이것은 결과 문자열에 숫자가 포함되어 있다는 유효성 검사를 수행하지 않으며 text
null 인 경우에도 예외 가 발생합니다 .
답변
이 질문은 “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 이상인지 확인하십시오.