/**
 * 바이트단뒤 getBytes
 * @param value 기준 문자열
 * @param encodeType 인코딩 종류
 */
public static function getBytes( value:String, encodeType:String="euc-kr" ): Number {
	var redByte : ByteArray = new ByteArray();			
	redByte.writeMultiByte(value, encodeType);						
	return redByte.length;
}
          
/**
 * 바이트단뒤 substring
 * @param value 기준 문자열
 * @param startIndex 시작 위치
 * @param length 마지막까지 길이
 * @param encodeType 인코딩 종류
 */
public static function substrBytes( value:String, startIndex:int, length:int, encodeType:String="euc-kr" ) : String {
	
	var totalLength : Number = getBytes(value);	
				
	if( length > 0 ){
		var redByte : ByteArray = new ByteArray();
		var wrByte  : ByteArray = new ByteArray();
					
		redByte.writeMultiByte(value, "euc-kr");
		redByte.position=0; 

		wrByte.writeBytes(redByte, startIndex, length);
		wrByte.position=0;
												
		return wrByte.readMultiByte(length, "euc-kr");
	}else{
		return null;
	}
}
var target:TraceTarget = new TraceTarget()
target.level = LogEventLevel.INFO;
target.includeDate = true;
target.includeCategory = true;
target.includeLevel = true;
Log.addTarget(target);
    
var logger:ILogger = Log.getLogger("mx.messaging.Channel");
logger.debug("here is some channel info {0} and {1}", 15.4, true);
// Flash 가 AS 3.0 기반으로 했을 경우 가능

public function initApp() : void {
	swfContent.addEventListener("init", swfLoaderInithandler);
	swfContent.load("/flashswf");
}

public function swfLoaderInithandler(event:Event) : void {
	var flashObj : Object = event.currentTarget.content;
        
        // Flash public 함수 호출
       flashObj .test();
}

문자열중에 ,(콤마)를 검색한다.

var pattern:RegExp = /,/;

str.replace(pattern, "");


문자열 중에 a를 검색한다.
i 는 대소문자를 구별하지 않을때 붙인다.
g 는 한번이 아닌 여러번..??, (음.. asdfasdf 여기서 a가 두번 나오는데 두번 다 한다는거던가. 테스트 해보시길;;)

var pattern:RegExp = /a/ig;

str.replace(pattern, "");

\d{3} 숫자 3개가 옴
\d{1,3} 숫자 1개에서 3개가 옴


[전화번호 패턴]

var pattern:RegExp = /^\d{2,3}-\d{3,4}-\d{4}$/;

/^\d{2,3}-?\d{3,4}-?\d{4}$/


[이메일 패턴]
var pattern:RegExp = /(\w|[_. \-])+@((\w|-)+\. ) +\w{2,4}+/;
한글 포함
var re : RegExp = /(\w|[_.\-가-힣])+@((\w|[_\-가-힣])+\.)+\w{2,4}+/;


[HTML 패턴]

String reghtml = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";

content = content.replaceAll(reghtml, "");



// <a href="<%=request.getParameter("p")">adsf</a> --> <a href='<%=request.getParameter("p")'>adsf</a>
content = content.replaceAll("(<\\w+:(?:[^>]|<%=[^%]+%>)+=)\"([^<\"]*<%=[^%]*\"[^%]*%>[^\"]*)\"", "$1'$2'");


[공백연속 패턴]

var a = "asdfnaf   dd";

a = a.replace(/[\s,]+/g, "");

alert(a);


[줄바꿈 패턴]

^\R



반복 메타 문자

반복 메타 문자

의미

*

0회 이상 방복

+

1회 이상 반복

?

0회 혹은 1회

{m}

m회 반복

{m,n}

m회부터n회까지 반복


매칭 메타 문자

메타 문자

의미

.

줄바꿈 문자를 제외한 모든 문자와 매치됨

^

문자열의 시작과 매치됨.

[]메타 기호 안에서는 반대의 문자열을 취함

$

문자열의 마지막과 매치됨

[]

문자 집합 중 한 문자를 의미함

|

또는(or)를 의미함

()

정규식을 그룹으로 묶음


이스케이프 기호

분야

설명

\\

역슬래쉬 문자 자체

\d

모든 숫자와 매치됨 [0-9]

\D

숫자가 아닌 문자와 매치됨[^0-9]

\s

화이트 스페이스 문자와 매치됨[ \t\n\r\f\v]

\S

화이트 스페이스가 아닌 것과 매치됨 [^ \t\n\r\f\v]

\w

숫자 또는 문자와 매치됨[a-zA-Z0-9_]

\W

숫자 또는 문자가 아닌 것과 매치됨[^a-zA-Z0-9_]

\b

단어의 경계를 나타냄. 단어는 영문자 혹은 숫자의 연속 문자열.

\B

단어의 경계가 아님을 나타냄.


최소 매칭을 위한 정규식

기회

의미

*?

*와 같으나 문자열을 취소로 매치함.

+?

+와 같으나 문자열을 취소로 매치함.

??

?와 같으나 문자열을 최소로 매치함.

{m,n}?

{m.n}과 같으나 문자열을 최소로 매치함


re모듈의 주요 메소드

메소드

설명

compile(patten[, flags])

pattern을 컴파일하여 정규식 객체를 리턴한다.

search(pattern, string[,flags])

string을 검사하여pattern에 맞는 문자열 부분이 있는가를 찾는다.

match(pattern, string[,flags])

string의 시작부터 pattern에 맞는지 검사한다.

split(pattern, string[, maxsplit=0])

string을 pattern을 기준으로 분리한다.

findall(pattern, string)

string에서 pattern을 만족하는 모든 문자열을 추출한다.

sub(pattern, repl, string[, count-0])

string에서 pattern을 repl로 대치한다.

subn(pattern, repl, string[,count=0])

sub와 동일하나 대치 횟수도 함께 전달한다.

escape(string)

영문자 숫자가 아닌 문자들을 백슬래쉬 처리해서 리턴한다. 임의의 문자열을 정규식패턴으로 사용할 경우 유용하다.


정규 표현식에서 사용 가능한 플래그

플래그

내용

I, IGNORECATE

대, 소문자를 구별하지 않는다.

L, LOCATE

\w, \W, \b, \B를 현재의 로케일에 영향을 받게한다.

M, MULTILINE

^가 문자열의 맨 처음, 각 라인의 맨 처음과 매치된다.

$는 문자열의 맨 끝, 각 라인의 맨 끝과 매치된다.

S, DOTALL

.을 줄바꾸기 문자도 포함하여 매치하게 한다.

U, UNICODE

\w, \W, \b, \B가 유니코드 문자 특성에 의존하게 한다.

X, VERBOSE

정규식 안의 공백은 무시된다.


Module  하고 SWFLoader 로 모듈화 공부 하는 도중 모듈 소스속에 ViewStack를 사용할 경우, TypeError 1034  납니다.

삽질하던 도중 해결방안을 찾아서 글 남깁니다.
저만 그런건지.. 다 그런건지 잘 모르겠습니다.


모듈 불러올때,

TypeError: Error #1034: 유형 강제 변환에 실패했습니다. mx.managers::HistoryManagerImpl@f183921을(를) mx.managers.IHistoryManager(으)로 변환할 수 없습니다.

Alert 띄울때,

TypeError: Error #1034: 유형 강제 변환에 실패했습니다. mx.managers::PopUpManagerImpl@41d77e1을(를) mx.managers.IPopUpManager(으)로 변환할 수 없습니다.


현재로선 이 두가지만 봤는데요. 또 튀어 나올지 모릅니다.
해결 방안은 아래와 같이 하면 되네요.


왜 그런지. 모르겠습니다. 구글링하다가 일본 사이트에서 해석안되는 답변 소스중에 있어서 해봤더니.. 에러는 안 나는데..
다른 문제가 있는것인지.. 잘 모르겠습니다.


제가 하두 삽질해서.. 저 같이 고생하시는 분 계실까봐. 우선 많은 테스트는 거쳐보지 않았지만 올려봅니다.
왜 아래와 같이 하면 오류가 안나는지.. 아래와 같은 선언이 무슨 기능을 하는건지 궁금합니다. 


몇일 삽질하던거.. 해결해서.. 오늘은 이만 공부하고.. 내일 이 부분에 대해서 테스트 해봐야겠네요.

이렇게 함으로 인해.. 또 다른 문제점이 생기면.. ㅠㅠ 인데요... ㅎㅎ 

그럼 즐코딩 하세요.



import mx.managers.IPopUpManager;   
import mx.managers.IHistoryManager;
   
private var iPopUpManager:IPopUpManager;
private var iHistoryManager :IHistoryManager;

+ Recent posts