html 문서들 안에서 내가 필요한 부분을 추출하려 할 때...
패턴...이라고 해야할까... 무언가 나타나는 순서를 정하고, 그것에 프로그램을 맞춰넣게 된다.
그것을 매번 하다보니... 귀찮아(?)져서... 저장해볼 겸... 만들어보려 했다.
...
<textarea name=textV>
<table id=tableAll><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr></table>
</textarea>
<textarea name=out1></textarea><textarea name=out2></textarea>
<script>
var sText=new Array(
'<tr>', // 0
'<td>', // 1
'</'); // 2
var sText=new Array(
'<tr>', // 0
'<td>', // 1
'</'); // 2
function searchCount() { // useage : (string, pNum1, pNum2, eNum) -> pNum2-eNum
var ar=arguments, sv=ar[0], i, a, b;
var ar=arguments, sv=ar[0], i, a, b;
a=0; b=-1;
for (i=1; i<(ar.length-1); i++) {
a=sv.indexOf(sText[ar[i]], a); if (a<0) break;
a+=sText[ar[i]].length;
}
b=sv.indexOf(sText[ar[i]], a);
if (a<0) return a; if (b<0) return b;
return sv.substring(a, b);
}
for (i=1; i<(ar.length-1); i++) {
a=sv.indexOf(sText[ar[i]], a); if (a<0) break;
a+=sText[ar[i]].length;
}
b=sv.indexOf(sText[ar[i]], a);
if (a<0) return a; if (b<0) return b;
return sv.substring(a, b);
}
out1.innerText=searchCount(textV.innerText, 0, 2); // <tr> </
out2.innerText=searchCount(textV.innerText, 0, 1, 2); // <tr> <td> </
out2.innerText=searchCount(textV.innerText, 0, 1, 2); // <tr> <td> </
</script>
...
...
간단히 설명하자면,
텍스트 박스들에
첫번째는 입력값이고,
두번째는 <tr>과 마주치(?)는 </ 사이의 값이고,
세번째는 <tr> 다음 <td> 와 </ 사이의 값이다.
이런 방법으로 함수를 만들어놓으면
매번 index 와 length 를 조합해서 찾을 필요가 없...을 듯 보인다.
...
살짝 문제되는 점이...
<tr> 이나 <td> 의 경우, 지금처럼 한번만 처리하면 되는 경우는 문제가 안되지만,
뒤에 나타나는 2, 3 의 경우를 받아내기 위해서는 읽는 포인터를 다음으로 넘겨야 하는데,
함수쪽으로 넘기는 것은 string 앞이나 뒤에 선언하면 된다 치고(?),
함수쪽에서 스트링 외에 받아야하는 문제는 어떻게 풀어야 할까..?
array 로 선언하자니, 나중에 다시 delete 하기가 귀찮고...
... = =;... 일단 여기까지만 하자.
...
NowMark killofki@.
'string' 카테고리의 다른 글
심심풀이] 상하반전문자를 만들어볼까... (0) | 2010.05.12 |
---|---|
filename] html 파일의 파일명/파일확장자 구하기... (0) | 2010.05.08 |
글자분해] 검색을 향한 한글분해&대문자화... 그리고... (0) | 2010.04.22 |
주소종류 구별하기...? (0) | 2009.09.04 |
팝업의 서술을 위해... 만들어본 buffering 함수...? (0) | 2009.09.03 |