시소당
자바에서 string에 특정 문자열 형태가 있는지 확인하는 방법이 알고 싶습니다.
여러 데이터 string 중에서 시간 형식이 xx:xx:xx형태로 있는 부분만 추출하고 싶습니다.
예를 들면
aaaaa bbbb ccc ddd eeeee vvvv 111 222 iii 00:01:02
위 같은 문자열을 받았다고 하면 00:01:02 부분이 시간이거든요.
문제는 앞의 aaa bbb등의 부분은 일정하지 않습니다.
스페이스의 위치와 횟수 또한 일정하지 않습니다.
단지 [숫자숫자:숫자숫자:숫자숫자] 이 형태라는 것만 가지고 그 시간부분을 따로 추출해야 하는데
if문 떡칠을 하면 해낼 수 있겠지만...
그건 너무 코드가 지저분해질 것 같아서..
쉽게 해주는 클래스나 메소드 있나요?
---------------------------------------------------------------------------------------------
문자열을 어떤 패턴으로 컨트롤하고 싶다면, 정규식을 사용하면 유용합니다.
인터넷에 정규식 / Regular Expression 으로 검색하시면 도움받으실 듯합니다.
인터넷에 올라와있는 소스를 약간 변형해 보았습니다.
### Regexp.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regexp {
public static void main( String args[]){
// \d 는 숫자 {2} 자릴수 , dd:dd:dd 형태를 찾는 정규식
String patternStr = "\\d{2}:\\d{2}:\\d{2}";
Pattern pattern = Pattern.compile(patternStr);
CharSequence inputStr = "aaaaa bbbb ccc ddd eeeee vvvv 111 222 iii 00:01:02";
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find();
String match = matcher.group();
System.out.printf("matchFound = %s , match = %s\n"
,matchFound,match);
int start = matcher.start();
int end = matcher.end();
matchFound = matcher.find();
System.out.printf("start = %d , end = %d , matchFound = %s"
,start,end,matchFound);
}
}
출처 : 네이버지식인
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10106
&eid=2P5I0bMIANg320O/YfEezS0czwGDq+JC&qb=wNq52SBtYXRjaGVy