2010-02-19 3 views
22

AS3에서 제공된 변수를 사용하여 문자열을 포맷하려면 어떻게해야합니까?액션 스크립트 3.0 문자열과 포맷?

//vars 
var myNumber:Number = 12; 
var myString:String = "Months"; 
var myObject:MovieClip = year; 

//string 
myString.txt = "One (?) consists of (?) consecutive (?)", string(myObject), string(myNumber), myString; 

그래서 위의 문자열에, 나는 mystring에이 "1 년 12 개월 연속 구성"을 표시하고 싶습니다,하지만 난 AS3에 새로 온 사람과 제대로 문자열을 포맷하는 방법을 모르겠어요.

숫자 변수를 문자열 string (myNumber)로 캐스팅해야하지만 동영상 클립 변수를 문자열 string (myMovieClip)로 캐스팅하면 반환되는지 확실하지 않습니다. 무비 클립의 이름 또는 오류가 발생합니다. 나는 나중에 내기 할 용의가있다.

답변

46

this similar question에 대한 답변은 Formatter 클래스 또는 StringUtil.substitute()을 사용하는 것이 좋습니다.

후자는 가장 단순합니다.

var str:String = "One {0} consists of {1} consecutive {2}"; 
var newString:String = StringUtil.substitute(str, myObject, myNumber, myString); 

substitute()가 자동으로 String으로 인수를 캐스팅해야하지만 코드에서, 당신은 문자열로 무비 클립 (myObject)를 주조 할 수 있는지 확실하지 않습니다 : 귀하의 경우 귀하는 다음과 같이 사용할 것 .

다른 프로그래밍 언어에서 printf을 사용한 경우 특히 좋은 옵션은 third-party printf-as3 function입니다.

1

주조 객체()

toString 메소드를 문자열로 Object 클래스에 정의되어 있습니다. 따라서 모든 객체에는이 메소드가 정의되어 있습니다. 따라서 myObject.toString()을 호출하면 일반적으로 찾고있는 것을 제공합니다. 특정 객체는 getString()에서 제공 한 형식과 다른 형식으로 객체의 문자열 설명을 반환하는 date.getHours()와 같은 추가 메서드를 정의합니다.

int와 같은 기본 유형의 경우 String (myInt)을 사용하여 캐스트 할 수 있습니다.

문자열을 결합 함께

다음과 같이 다음 함께 문자열의 다른 부분을 추가 할 수 있습니다

: 도움이

var myString:String = "There are " + String(24) + " hours in a day." 

희망, 데이브

0

짧은 길을 내가 좋겠 다음과 같이 입력하십시오 :

var finalString:String = "One " + myObject + " consists of " + myNumber + " " + myString; 

작은 따옴표 나 큰 따옴표는 문자열 리터럴을 시작합니다. + 기호를 사용하여 문자열 리터럴에 무언가를 추가하면 해당 객체의 toString()이 자동으로 호출됩니다.

myObject는 [Object MovieClip]을 반환합니다. MovieClip을 확장 한 사용자 정의 클래스를 만든 다음 toString() 보호 된 메서드를 재정 의하여 원하는 모든 문자열을 반환합니다.

희망 하시겠습니까?

+0

myObject.name이 작동하는 것 같습니다. var finalString : String = "하나의"+ myObject.name + "은"+ myNumber + ""+ myString; – TheDarkIn1978

+0

myObject.name은 A) myObject가 스테이지에 있고 인스턴스 이름을 가지고 있거나 B) 이전에 수동으로 myObject.name을 수동으로 설정 한 경우에만 작동합니다. .name은 모든 DisplayObject의 문자열 속성입니다. Flash IDE에 더 잘 통합되도록 (즉, 무대에 물건을 올려 놓을 수 있도록) 또는 getChildByName()을 사용할 수 있도록 물건의 이름을 지정해야하는 특정 경우에 사용할 수 있습니다. 그래도 도움이 되니 기쁩니다! Flash에서 + 연산자를 사용하여 복잡한 문자열을 어셈블리하는 것이 훨씬 쉽습니다. 건배! – Myk