'자바스크립트'에 해당되는 글 2건

  1. 2011.02.10 | [JavaScript] replaceAll
  2. 2006.02.07 | 자바스크립트로 초/중/종성 분리하기

[JavaScript] replaceAll

0 | 1/web | 2011. 2. 10. 18:17
Posted by oveRock
쌈박하게 본론만
 String.prototype.replaceAll = function(o, n) { return this.split(o).join(n); }

그럼 테스트를 해 봅시다.
alert("hello".replaceAll('l', 'L'));

정규식 쓰고 싶으면 o 인자에 "string"이나 'string' 대신에 /regex/가 들어가야 하....지만, 묘하게 작동이 안 된다!! (ㅋㅋㅋ)
결국 무식하게 돌려야 하는건가 ㄱ-
일단 split의 특성은 좀 이따 연구하고, 그냥 무식한 코드를 만들어 보자.
String.prototype.replaceAll = function(o, n){ var ret = this; while(ret.match(o)) ret = ret.replace(o, n); return ret; }

이제 테스트
alert("hello".replaceAll(/\d/, '*');

죽잖아!! orz

댓글을 달아 주세요

자바스크립트로 초/중/종성 분리하기

0 | 1/web | 2006. 2. 7. 12:02
Posted by oveRock
여기 저기를 기웃기웃하다가 한글의 종성 판별에 관한 게시물을 읽고 나도 한글자 써볼까 한다.
PHPSchool에서 우연히 가져왔는데, 원본 게시물은 여기에 있다.

그동안 유니코드로 변환, 조합형 코드로 변환 등 여러 가지 방법론들이 제기되었지만, 이 방법만큼 tricky하고 simple한 코드는 보지 못한듯하다.
추가 : 이 스크립트의 핵심적인 원리는, javascript의 charCodeAt() 함수가 확장완성형 한글이 아닌, UTF16값을 가져온다는 데 있다. php에서는 iconv 등의 사용이 필요할 것으로 보인다.

물론 lookup table을 쓰긴 한다...만, 보시다시피 상당히 사이즈가 초라하니 애교로 넘어가 주자. 첨언하면, lookup table은 결코 부끄러운 것이 아니다. 운영체제의 커널 소스를 구할 재주가 있다면 한번 구해서 보자. 온통 lookup table 투성이다.
잘 본 테이블 하나 열 알고리즘 안부럽다!

font_cho = Array(
'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ',
'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ',
'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ' );

font_jung = Array(
'ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ',
'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ',
'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ',
'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ' );

font_jong = Array(
'', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ',
'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ',
'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ' );


stringtest = "뷁";
CompleteCode = stringtest.charCodeAt(0);
UniValue = CompleteCode - 0xAC00;


Jong = UniValue % 28;
Jung = ( ( UniValue - Jong ) / 28 ) % 21;
Cho = parseInt (( ( UniValue - Jong ) / 28 ) / 21);

alert( font_cho[Cho] );
alert( font_jung[Jung] );
alert( font_jong[Jong] );


이중 종성만이 중요한 경우(예: 조사 붙임)에는 굵은 표시가 된 부분만 긁어서 응용하면 되기 때문에 더더욱 편하다.
츄르륵 ㅠ_ㅠ
이거 만든 사람 천재 ㅡ_-)乃

댓글을 달아 주세요

블로그 이미지

oveRock

(life) = ∫(decision)dt

카테고리

분류 전체보기 (129)
Kaffa (13)
Muzik (18)
Skeptic (4)
Foto (10)
0 | 1 (16)
Etc... (68)