2012-09-19 2 views
2

안녕하세요 저는 Action Script를 사용하고 있는데 문자열에 특수 문자 나 숫자가 포함되어 있는지 확인하려고합니다. 그렇지 않으면 내 목록에 추가하지 않으면 오류 출력이됩니다 ... NAN이 나에게 error String 유형의 값을 관련없는 유형 번호로 암시 적으로 강제 변환합니다. Number ... any suggestions?문자열 유효성 검사 ActionScript

private function onAddName(event:Event):void { 
     var newItem:Object = {label:addName_ti.text}; 
     //if not a number true then add onto list. 
     if (isNaN(addName_ti.text) 
     { 
      names_li.dataProvider.addItem(newItem); 
      names_li.dataProvider.sortOn("label"); 
      addName_ti.text = ""; 
      addName_bn.enabled = false; 
      //User feedback for successfully entering item. 
      trace ("Item succesfully added!"); 
     } else 
     { 
      //User feedback for not succesffully entering item. 
      addName_bn.enabled = false; 
      trace ("Improper formatting"); 
     } 

    } 
+0

필자의 복사본/붙여 넣기가 잘못되었지만 isNaN이 누락되어 있는지 여부는 알 수 없습니다. >>) <<이 경우 컴파일 오류가 발생합니다. –

답변

0

isNaN은 숫자를 예상합니다. 그래서 당신은 오류가 발생합니다. 먼저에서는 parseFloat를 사용해야합니다

isNaN(parseFloat(addName_ti.text)); 

에서는 parseFloat 특히 외부 텍스트에 좋은, 그것은 공백과 후행 문자를 무시하기 때문이다. 구문 분석에 실패하면 NaN을 반환합니다.

" 12"12을 반환합니다. "12abc"는 12을 반환합니다. "abc12"는 NaN을 반환합니다. " 12 34 5 6"12을 반환합니다.

텍스트의 형식이 올바른지 확인하려면 숫자 Number("12")으로 전송하는 것이 약간 빠릅니다. 테스트에서 1000 만회를 한 것은 약 400ms 빨랐습니다.

+0

감사합니다, 매력처럼 일했습니다! – YoungGuy

0

때는 isNaN 방법을 사용하여 문자열을 숫자로 캐스팅해야합니다 있도록 Number 매개 변수 예상 : 여기에 몇 가지 코드

if(isNaN(Number(addName_ti.text)) 

는 또한 유효성을 검사하는 정규 표현식 (정규식)를 사용할 수는 변수 :

var isNumeric:RegExp= /^[0-9]*$/; 
trace(isNumeric.test(addName_ti.text)); 
+0

잘 작동합니다 (텍스트 형식이 올바른 경우). 공백과 후행 문자를 확인하지 않으므로 속도가 약간 빨라질 수 있습니다. – BadFeelingAboutThis

관련 문제