자바에서 어떤 문자열의 특정값을 뽑아 올 일이 있다.
처음엔 패턴 관련으로 만들었었는데, 이리저리 관계가 복잡하여, 찾아보니,
결국은 패턴도 String 클래스로 귀결되는 것 같다.
어쨋든 함수내에서 뽑아오는 것을 다음 처럼 만들었다.
public static String findBBSNumber(String text){
String temp="N"; // 반환할 문자열
int StartNum=text.indexOf("article("); // 찾을 글자 'article('
if(StartNum != -1){
temp = text.substring(StartNum+8, StartNum+12);
}
return temp;
}
html 문서 파싱 내용 중 게시물 번호의 접근이 자바스크립트 함수 링크로 되어있기에,
해당 문자열(a href의 attribute값) 중에 article()함수를 호출하는 부분을 찾아야 했다.
위의 경우에, String 클래스의 indexOf를 쓰면, 현재 찾고 있는 글자 "article("가 몇번째 글자인지 나오고,
만약 해당 글자가 있을 경우엔 그 위치값을 아닐 경우에는 -1을 반환한다.
if문으로 검색해서, 글자가 있을 경우엔,
String 클래스의 substring을 사용하여, ( )안의 값만 뽑아오는 내용이다.
( stringname.substirng(뽑아올 숫자의 시작 인덱스, 끝 인덱스) )
함수 전체의 return인 temp string이야 null값을 주던지, 위처럼 특정한 문자열을 반납하는지는 자유롭게 하면 될듯하고, (내 경우엔, N이 아니라, 다른 문자값 반환이 필요해서..)
전체적으로 String 클래스안의 메소드를 사용하면 좀 더 효율적으로 작성할 수 있을 듯 하다.
억지로 패턴이라던가 어려운 방법으로 돌아가는 것보다 이렇게 가는 것이 더 깔끔할 것 같다.
위의 경우엔, 가로 안의 숫자값이 4자리일거라 생각하고, 뽑았는데, 끝나는 )를 찾아서 뽑게 수정하면 될듯.
반응형
'JAVA' 카테고리의 다른 글
Java 형변환 정리 (0) | 2021.11.28 |
---|---|
자바 List 객체에 중복 없이 데이터 추가하기 (0) | 2021.11.27 |
숫자에 출력 포맷 (화폐) 단위 적용하기 (0) | 2021.11.26 |
HashMap (0) | 2021.11.25 |
long 에서 String 으로 String 에서 long 으로 형변환 (0) | 2021.11.23 |
최근댓글