문자열 크기에 관계없이 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 이상인지 확인하십시오.
이것은 작동합니다
Integer i= Integer.parseInt(text.substring(text.length() - 7));
StringUtils.substringAfterLast ( "abcd : efg : 1006746", ":") = "1006746";
문자열의 형식이 고정되어있는 한 substringAfterLast 를 사용할 수 있습니다 .
'program tip' 카테고리의 다른 글
Windows 서비스를 설치할 수 없습니다. (0) | 2020.10.25 |
---|---|
CMake가 OpenSSL 라이브러리를 찾을 수 없음 (0) | 2020.10.25 |
Manifest.permission.ACCESS_FINE_LOCATION을 해결할 수 없습니다. (0) | 2020.10.25 |
잘못된 UTF-8 문자가있는 Android WebView. (0) | 2020.10.25 |
악센트 부호가있는 문자 바꾸기 PHP (0) | 2020.10.25 |