2016-10-10 1 views
0

특정 문자를 제외한 문자열의 첫 번째 부분을 찾으려면 Java에서 가장 좋은 방법은 무엇입니까? 정보의 경우 유일한 공통 요소는 첫 번째 [. 그 다음, 그 다음의 수]는 가변 길이입니다.특정 문자를 제외한 문자열의 첫 번째 부분을 찾기위한 Java의 가장 좋은 방법

예 입력 문자열 :

john[43] was 
Dave[0] had 
Sally[241] used 

필수 출력 문자열 :

john 
Dave 
Sally 
+1

"["보다 먼저 문자가 필요하십니까? – Heisenberg

+1

브래킷에 도달 할 때까지 계속 잡아 두는 문자입니까? 어려움이 무엇인지 명확하지 않습니다. –

+0

정규식을 사용하면이 작업을 매우 쉽게 처리 할 수 ​​있습니다. –

답변

1

이 분리 문자의 문자의 인덱스를 찾아 해당 인덱스에 0 번째 인덱스부터 문자열을.

String s = "John[1234]sadf"; 
System.out.println(s.substring(0, s.indexOf("["))); 
+0

고마워, 나는 위의 시도했지만 마지막에 +1을 추가했다 ... ("[") +1); 내가 그것을 사용하고있는 입력은 웬일인지 그것을 좋아하지 않았다. 그런 다음 현재 "["와 함께 : Name = Name.replaceAll ("\\ [", ""); 계속 노력하겠습니다 :) – BlazeUK

+0

입력 한 내용을 볼 수 있습니까? – Heisenberg

+0

채팅 스트림에서 가져온 것이므로 null 일 가능성이 높습니다. 지금 검토하려고합니다. – BlazeUK

0

다음은 건방진 방법이지만, 분할은 배열을 반환합니다.

String firstPart= inputString.split("[")[0]; 

또 다른 방법은 하위

int index = inputString.indexOf("["); 

를 사용하는 전에 모두를위한 문자열을 만들기 위해 그 인덱스로 문자열을 사용하는 것입니다.

+0

Heisenberg의 대답은 indexOf 메서드를 다루지 만 분할 메서드가 포함되어 있으므로 여기에 답을 남깁니다 (열등하지만 나중에 참조 할 때 유용 할 수 있음) – Chains

0

john[43] was 전의 텍스트가 있다고 가정하면 as soon as john[43] was과 같은 문자 일 수 있습니다.

이 같을 것이다 문자열 목록을 만들 수 있습니다 정규식을 사용하여 :

List<String> allMatches = new ArrayList<String>(); 
Matcher m = Pattern.compile("([A-Za-z])*\[\d*\]") 
    .matcher(yourInputStringHere); 
while (m.find()) { 
    allMatches.add(m.group()); 
} 
  • 존을 [43]
  • 데이브 [0]
  • 샐리 [241]

이렇게하면 입력 시작 부분에서 여분의 문자 또는 공백이 선택되지 않습니다.

그런 다음 반복하여 수행 할 수 있습니다.

for (String s: allMatches){ 
    System.out.println(s.substring(0, s.indexOf("["))); 
} 
관련 문제