노무현 대통령 배너

AS3.0의 replace() 를 이용해서 문자열 바꾸기

by on 5.27, 2009, under AS3.0 API

액션스크립트 3.0에 들어와서 AS2.0 이전에는 지원하지 않았던 String.replace() 메서드를 이용해 특정 문자열을 바꿀 수 있게 되었습니다.

0
1
2
3
4
5
6
var baseText:String = "세계의끝과 하드보일드 원더랜드";
var str:String;
 
str = baseText.replace("하드보일드","플래시");
 
trace( str ); //출력 : 세계의끝과 플래시 원더랜드
trace( baseText ); //출력 : 세계의끝과 하드보일드 원더랜드

위와 같이 baseText 에 replace() 메서드를 사용하면 원본 baseText 은 수정하지 않고 복사본의 문자열을 리턴합니다.

아래 메서드 정의를 보면 바꿔질 요소는 pattern 이고, 문자열을 반환합니다.

0
function replace( pattern:*, repl:Object ):String

pattern:* 에 문자열을 입력하면 toString() 으로 작동하고, 정규식[01] 을 사용하게 되면 아래 예제와 같이 정규식으로 작동합니다.

0
1
2
3
4
5
6
var baseText:String = "그는 미술을 전공한 디자이너 출신입니다. 그는 현재 액션스크립트 개발자로 변신했죠.";
var str:String;
 
var myPattern:RegExp = /그는/g;
str = baseText.replace(myPattern, "저는");
 
trace( str ); // 출력 : 저는 미술을 전공한 디자이너 출신입니다. 저는 현재 액션스크립트 개발자로 변신했죠.

위의 예제는 while 이나 for 문을 사용하지 않고도 문자열의 모든 해당 단어를 모두 바꿔주는 강력한 기능을 보여주고 있습니다.

또한 정규식과 함께 두번째 파라미터인 repl 에 함수를 사용할 수도 있습니다.

0
1
2
3
4
5
6
7
8
9
10
11
function replaceFuction():String
{
	return arguments[2] + arguments[1];
}
 
var baseText:String = "abc123 def456";
var str:String;
 
var myPattern:RegExp = /([a-z]+)([0-9]+)/g;
str = baseText.replace(myPattern, replaceFuction);
 
trace( str ); //출력 : 123abc 456def

이런식으로 정규식과 함수를 이용해 문자열의 순서를 바꾸거나 원하는 수준의 문자열 조작이 가능합니다.

관련 F1 레퍼런스

이 포스트는 API 차원에서의 학습이라 할 수 있겠습니다. 액션스크립트에 이런 기능이 있으니 학습을 통해 자신의 것으로 만드는 행위인 것이죠.
이 글과 직접 연관된 다음 글은 학습한 API를 이용해 재사용이 가능한 형태로 만드는 작업이 이어집니다. 그것이 다시 확장되어 다른 클래스에서 활용되는 과정까지 살펴보세요.

이 글을 복사해서 퍼가시는건 허용하지 않습니다. 글의 주소를 다른곳에 알려주시는 것은 환영합니다.
  1. F1레퍼런스에는 일반표현식이라고 표현되어 있고, 보편적으로 정규표현식, 줄여서 정규식 이라고 많이 알려져 있습니다. []

관련된 글

:, , , , , , , ,

4 Comments for this entry

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Meta