2017-09-06 3 views
-6
나는 아래의 문자열의 출력 첫 번째 싶어

와 분할 문자열 :자바 - 여러 대시

first-second-third 

그래서 기본적으로 내가 원하는 것을 마지막으로 돌진하기 전에 문자열을 얻을 수 있습니다를 (-) . 누구나 내게 이것에 가장 적합한 해결책을 줄 수 있습니까?

+2

무엇 지금까지 해봤 니? – Luke

+1

lastIndefOf ("-")를 가져오고 0에서이 인덱스로 부분 문자열을 가져 오는 것이 좋습니다. 그렇지 않습니다. –

+0

'String.split'의 문서를 읽으십시오. – Jens

답변

2

음, 아래로 많은 표하지만 난 솔루션

그렇게 할 수있는 가장 효율적인 방법을 추가 할 것입니다은 마지막에 출현하는이 캐릭터 라인 내에서 인덱스를 반환 java.lang.String의 번호 lastIndexOf에서도을 사용하고 있습니다 뒤로

검색 지정된 문자의

lastIndexOf에서도 -1을 돌려줍니다 대시

String str = "first-second-third"; 
int lastIndexOf = str.lastIndexOf('-'); 
System.out.println(lastIndexOf); 
System.out.println(str.substring(0, lastIndexOf)); // 0 represent to cut from the beginning of the string 

출력이 존재하지 않는 경우

12

첫 번째

+2

"쉬운 질문이기 때문에 많은 찬성표 _". 실제로, downvote의 이유는 : "이 질문은 연구 노력을 보여주지 않습니다."입니다. (버튼을 가져 가면 볼 수 있습니다;)) – AxelH

+0

@ 아이도 어떻게 대시가 없으면 어떨까요? – Makudex

+2

@Makudex 이제 if-statement를 쓰는 방법을 묻고 있습니까? Java로 모험을 시작해야 할 페이지라고 생각합니다. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html –

0
String s = "first-second-third"; 
String newString = s.substring(0,s.lastIndexOf("-")); 
+0

포인트가 고정되어 응답되었습니다. –

0

는 그냥도 수행 할 수 있습니다 정규식을 사용하여 는 lastIndex 방법 이외의 다른 방법으로, 코드 아래 시도 :

Pattern p = Pattern.compile("\\s*(.*)-.*"); 
Matcher m = p.matcher("first-second-third"); 
if (m.find()) 
    System.out.println(m.group(1)); 
+0

이것은 'lastIndexOf'와 동일하게 작동하지 않습니다. 예를 들어 입력 내용에 개행 문자가 있으면 작동하지 않습니다. –

+0

네, 맞습니다. 방금 정규 표현식에 대한 옵션을주었습니다 ... –