AS3.0 Cookbook/문자열2008. 8. 30. 15:30

AS3에서는 문자열을 String이라는 데이터 타입으로 선언한다. 보통 지금까지 사용해왔던 속성이나 메서드가 있지만 새로 추가된 부분이나 자주 사용하지 않는 것 중에 몇 가지만 짚어보도록 한다.

문자열 합치는 메서드concat()이라는 메서드가 있다. 이는 원본 데이터에 가공 없이 추가된 문자열을 반환하는 역할을 한다.

문자열내에 어떠한 값을 찾기 위한 indexOf()lastIndexOf()가 있다. 이는 앞(indexOf)이나 뒤(lastIndexOf)에서부터 인수로 선언된 값을 탖아 인덱스 값으로 반환한다. 찾는 값이 없을 때는 -1을 반환한다.

알파벳문자열을 대문자나 소문자로 통일 할때는 toLowerCase()toUpperCase()를 사용하여 값을 비교하거나 체크할 수 있다.

문자열중에 인덱스 위치에 문자를 추출하기 위해서는 substring이나 substr, slice를 이용하여 해당 위치의 문자열을 추출/제거할 수 있다.

문자열안에 문자를 교체하거나 제거하기 위해서는 replace()를 사용하는데 이는 첫번째 파라미터의 값을 두번째 파라미터의 값으로 교체한다.

앞뒤로 뒤집는 메서드는 배열의 reverse()라는 메서드로 문자열을 split로 조각내어 뒤집어주고 다시 join하여 뒤집어 준다.

[ escape sequence ]

문자이름

ASCII 기호

C++ 코드

ASCII 코드(10)

ASCII 코드(16)

 개행(줄을 바꿈)

NL(LF)

\n

10

0xA

 horizontal tab(수평 탭)

HT

\t

9

0x9

vertical tab (수직 탭)

VT

\v

11

0xB

back space

BS

\b

8

0x8

carriage return

CR

\r

13

0xD

경보

BEL

\a

7

0x7

 back slash

\

\\

 92

 0x5c

 물음표

?

\?

63

 0x3F

 작은 따옴표

'

\'

39

 0x27

큰 따옴표 

"

\"

34

 0x22

 

Posted by 버터백통
AS3.0 Cookbook/배열2008. 7. 5. 20:06

보통 for문을 사용하여 배열에 원소를 검사하여 찾고자 하는 값이나 단어의 일부를 검색하고 할 때는 배열의 속성중에 indexOf()를 사용한다. 자주 사용하지는 않겠지만 필요할 때 번번히 새로 만드는 것 보다는 클래스로 구현하여 가지고 있으면 더더욱 활용가치가 클 것 같아 만들어 보았다.

배열의 값은 다음과 같다고 할때
var  ary:Array = ["서울" , "경기도" , "강원도" , "전라도" , "경상도" , "제주도" , "충청도"];
배열에 "서"을 포함하는 원소나 "전"을 포함하는 원소번호를 알아내어 접근하고자 할 때 다음과 같이 메서드를 호출한다.
원소0부터 시작하여 검색하고 1개가 발견되면 실행종료 후 원소번호 리턴
trace( findIndex( ary , "서" ) + "번 원소와 일치합니다." );    // 출력 : 0번 원소와 일치합니다.

모든 원소를 검색하여 포함되는 원소가 있으면 모두(Array) 리턴
trace( findIndices( ary , "경") + "번 원소와 일치합니다." )   // 출력 : 1,4번 원소와 일치합니다.

각 메서드는 다음과 같다.
//배열에서 찾은 1개의 원소번호를 반환
  private function findIndex( target:Array , word:Object ):int
  {
   var lengthNum:int = target.length;
   var i:int;
   var idx:int;
   for( i=0 ; i<lengthNum; i++ ){
    if( target[i].indexOf(word) != -1 ){
     idx = i;
     break;
    }else{
     idx = -1;
    }
   }
   return idx;
  }

앞에서 부터 한개의 원소만 찾은 후 반환하는 위 메서드는 사실 많이 사용되진 않겠지만 indexOf의 값이 -1이 아닐때 즉 값이 있을 경우 원소번호를 반환하고 순환문은 종료한다.

//배열에서 찾은 여러개의 원소번호를 반환
  private function findIndices( target:Array , word:Object ):Array
  {
   var lengthNum:int = target.length;
   var i:int;
   var idx:int;
   var indices:Array = [];
   for( i=0 ; i<lengthNum; i++ ){
    if( target[i].indexOf(word) != -1 ){
     indices.push( i );
    }else{
     idx = -1;
    }
   }
   return indices;
  }

포함되는 모든 원소를 알아내는 위 메서드를 저는 주로 사용하겠지만 앞서 만들어진 메서드와 같은 방법으로 indexOf를 통해 포함여부를 확인하고 있으면 내부의 배열에 push한다. 순환문을 모두 마치면 그 배열을 반환한다.

물론 위의 코드는 뼈대만 만들어 보았고 반환타입이나 값, 실행시 필요한 값들이 좀 더 다듬어져야 할 것 같다.

Posted by 버터백통