블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
12-12 07:04
 

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
 

최근에 올라온 글

최근에 달린 댓글

'replaceall'에 해당되는 글 3건

  1. 2010.03.07 [JAVA] replaceAll 정규식 팁! 3
  2. 2009.08.12 [JavaScript] replaceAll 2
  3. 2009.03.18 [Java] replaceAll 로 공백 제거하기

HTML 을 XML 파서로 파싱해서 객체화 시킬 일이 있어 여러 가지 실험해 보다가 쓸만한 팁을 정리합니다.

HTML 의 경우는 XML 과는 다르게 태그를 닫지 않거나 attribute 를 큰 따옴표로 감싸지 않아도 브라우저에서 확인이 가능합니다. 이렇기 때문에 HTML 을 XML 파서로 파싱하려면 큰 따옴표로 묶이지 않은 부분을 변경해 주어야 합니다.
(실제로 작업을 해보지는 않았으나 태그를 닫지 않는 것을 수정하려면 문서 전체를 문자열 단위로 파싱을 해야 가능할 것 같습니다.)

[TYPE_A]
<P class=PStyle0>
...
</P>

[TYPE_B]
<P class="PStyle0">
...
</P>

간단하게 이야기 하자면 [TYPE_A][TYPE_B] 로 변경하는 것이 목적입니다.

자바에서는 replaceAll 메소드와 정규식을 이용하면 쉽게 변환이 가능합니다.


우선 replaceAll 의 첫번째 파라미터를 설명하겠습니다.
'class='로 시작을 하고 스페이스, '>', 큰 따옴표가 나오기 전까지의 모든 문자들의 연속을 찾습니다. 괄호로 묶음은 그룹을 뜻하는데 여기서 그룹 1 은 'class=' 이며, 그룹 2 는 위의 [TYPE_A] 에서 라면 'PStyle0' 까지 입니다.

두번째 파라미터는 간단합니다. '$그룹번호' 로 변경하겠다는 이야기 입니다.
'$1\"$2\"' 을 단계별로 변환하면 그룹 1 이 교체되면 'class=\"$2\"' 가 되고 그룹 2 가 교체되면 'class=\"PStyle0\"' 이 됩니다.

정규식은 역시 활용만 잘하면 단순 노가다 작업을 간단하게 줄여줄 수 있는 강력한 무기가 됩니다.


Posted by 자수씨
, |

[JavaScript] replaceAll

JavaScript / 2009. 8. 12. 10:59

예전에 한참 스크립트와 생활을 할 때 봤던 내용인데 까먹을까봐 정리해야 겠습니다 ㅋㅋㅋ



String의 prototype에 replaceAll함수를 추가하는 방식입니다.

split함수를 이용하여 바꿀 부분으로 자르고 join으로 합치는 방식은 어떤 분이 생각했는지 몰라도 참 대단한 발상인 것 같았습니다.

Split, Join 함수의 정의를 보면 다음과 같습니다.
split Method (Windows Scripting - JScript)

Returns the array of strings that results when a string is separated into substrings.

stringObj.split([separator[, limit]])
stringObj

Required. The String object or literal to be split. This object is not modified by the split method.

separator

Optional. A string or an instance of a Regular Expression object identifying one or more characters to use in separating the string. If omitted, a single-element array containing the entire string is returned.

limit

Optional. A value used to limit the number of elements returned in the array.

출처: MSDN (http://msdn.microsoft.com/en-us/library/t5az126b(VS.85).aspx)

join Method (Windows Scripting - JScript)

Updated: March 2009

Returns a string value consisting of all the elements of an array concatenated together and separated by the specified separator string.

arrayObj.join(separator) 
arrayObj

Required. An Array object.

separator

Required. A String object used to separate one element of an array from the next in the resulting String object. If omitted, the array elements are separated with a comma.

출처: MSDN (http://msdn.microsoft.com/en-us/library/59x7k999(VS.85).aspx)
split은 문자열 뿐만아니라 정규식으로도 잘라낼 수 있기 때문에 자바에서 쓰는 replaceAll과 거의 유사하게 결과를 볼 수 있을 것이라 생각됩니다. 하지만 수행속도는 당연히 떨어지겠죠...



요즘 회사일이 너무 자주 바껴서 정신이 읍네요 -_ㅜ...


Posted by 자수씨
, |

회사 프로젝트 코드에서 공백이 포함된 문자열을 공백을 제거할 로직을 추가할 일이 있어서
아래와 같은 방식으로 수정을 하였습니다.


허나 결과는...
Vicki Yi : Vicki Yi

정규식에서 공백은 정확하게 공백으로 인식을 못하는 것 같았습니다.
Pattern JavaDoc 에서 내용을 확인하였습니다.
http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

POSIX character classes (US-ASCII only)
\p{Lower} A lower-case alphabetic character: [a-z]
\p{Upper} An upper-case alphabetic character:[A-Z]
\p{ASCII} All ASCII:[\x00-\x7F]
\p{Alpha} An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit} A decimal digit: [0-9]
\p{Alnum} An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} A visible character: [\p{Alnum}\p{Punct}]
\p{Print} A printable character: [\p{Graph}\x20]
\p{Blank} A space or a tab: [ \t]
\p{Cntrl} A control character: [\x00-\x1F\x7F]
\p{XDigit} A hexadecimal digit: [0-9a-fA-F]
\p{Space} A whitespace character: [ \t\n\x0B\f\r]


그래서 아래와 같이 수정하였습니다.


결과는~~~ 원하는 결과가 나왔습니다.
Vicki Yi : VickiYi


정규식을 안쓰면 indexOf() 와 replace 를 while 문으로 돌려서 처리를 해야 하기에 역시 정규식이 깔끔한 것 같습니다.


Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백