2016-10-18 2 views
2

문자열이 ab:cd:ef:gh입니다. 이 입력에서 문자열 ef:gh (세 번째 콜론은 그대로 유지)을 반환하고 싶습니다.
문자열 apple:orange:cat:dogcat:dog을 반환해야합니다 (항상 4 개의 항목과 3 개의 콜론이 있음).
콜론으로 구분 된 문자열에서 마지막 두 항목의 문자열을 찾는 방법

콜론을 계산하고 두 번째 콜론 다음에 문자열을 만드는 루프가있을 수 있지만 해결하기 쉬운 방법이 있는지 궁금합니다.

답변

3

문자열에 split() 메서드를 사용할 수 있습니다.

String example = "ab:cd:ef:gh"; 
String[] parts = example.split(":"); 
System.out.println(parts[parts.length-2] + ":" + parts[parts.length-1]); 
+0

구분 기호를 수동으로 추가 할 때 이것을 사용해서는 안됩니다. – rajadilipkolli

0

split 기능이 여기에 있습니다. 문서에서와 같이 콜론을 구분 기호로 사용하십시오. 그러면 배열과 같이 마지막 두 개의 인덱스를 얻을 수 있습니다.

0

예, 쉬운 방법이 있습니다.
우선, 문자열 클래스 분할 방법을 사용하는 것이다 :

String txt= "ab:cd:ef:gh"; 
String[] arr = example.split(":"); 
System.out.println(arr[arr.length-2] + " " + arr[arr.length-1]); 

번째는, Matcher 클래스를 사용하는 것이다. 두번째 매개 변수로 시작 인덱스 소요 lastIndexOf()

+0

배열에 4 개 이상의 요소가 있거나 숫자 2와 3이 동적이어야합니다. – jthort

1
String example = "ab:cd:ef:gh"; 
String[] parts = example.split(":",3); // create at most 3 Array entries 
System.out.println(parts[2]); 
+0

좋은 방법 하지만 내 문자열에 더 많은 구분 기호가 포함되어 있으면 동적으로 작동하지 않습니다. – rajadilipkolli

+0

좀 더 일반적인 해결책을 원한다면 요청할 것을 기대하십시오. –

+0

나는 그 해답을 알고 있으며, 아래에 주어진다. 우리 모두가 여기 와서 우리의 삶을 편하게하기위한 일반적인 해결책을 찾는다. 그래서 나는 그것을 시도 할 것을 제안했다. 너의 접근 방식이 정말 마음에 든다. – rajadilipkolli

0

를 사용하여 오버로드 된 버전 :

str.substring(a.lastIndexOf(":", a.lastIndexOf(":") - 1) + 1) 
0

또 다른 해결책은, [^:]+:[^:]+$ 같은 것을 입력을 일치하도록 Pattern을 사용하는 것입니다. 패턴을 사용하면 다른 메소드를 변경하지 않고 다른 분리자를 쉽게 처리 할 수 ​​있으므로 쉽게 유지 보수 할 수 있습니다.

패턴을 사용하면 String.split()보다 효율적일 수 있습니다. 후자는 매개 변수를 내부적으로 Pattern으로 변환하기 때문에 패턴이 실제로 필요한 것 이상을 수행하기 때문입니다. 당신은 일반적으로 패턴마다 컴파일을 방지하기 위해 재사용 가능한 상수로 regex을 추출 할

String example = "ab:cd:ef:gh"; 
Pattern regex = Pattern.compile("[^:]+:[^:]+$"); 
final Matcher matcher = regex.matcher(example); 
if (matcher.find()) { 
    // extract the matching group, which is what we are looking for 
    System.out.println(matcher.group()); // prints ef:gh 
} else { 
    // handle invalid input 
    System.out.println("no match"); 
} 

참고 :

이 이런 식으로 뭔가를 줄 것이다. 상수를 사용하면 실제 코드를 보지 않고도 패턴을 더 쉽게 변경할 수 있습니다.

관련 문제