티스토리 뷰
728x90
반응형
2.0때부터 약간씩 수정하고 추가한 StringUtils 이다.
클래스이름처럼 String에 관련된 유틸 클래스이다.
남에것을 배껴다 쓴것도 있고 좀더 마이그레이션한 것도 있다.
일단 에이전시에서 빨리 쳐내기 위해서 이것저것 가리면 안되기에 ㅎㅎ~
여튼 제목답게 나만 유용한 클래스가 될 듯....
클래스이름처럼 String에 관련된 유틸 클래스이다.
남에것을 배껴다 쓴것도 있고 좀더 마이그레이션한 것도 있다.
일단 에이전시에서 빨리 쳐내기 위해서 이것저것 가리면 안되기에 ㅎㅎ~
여튼 제목답게 나만 유용한 클래스가 될 듯....
package imComponents.oddeye.utils { import flash.utils.ByteArray; public class StringUtils { public function StringUtils() { } /** * * 인자값에 \n 문자열이 있는지 찾아서 해당 문자열에 \n (newline)으로 적용. * @param str * @return * */ public static function getEnterKey( str:String ):String { var regx:RegExp = /\w*\\n/g; var restr:String = str.replace( regx, "\n" ); return restr; } public static function getSplitEnterKey( str:String ):String { var regx:RegExp = /\\n+/g; return str.replace( regx, "" ); } /** * * 인자값에 \n 문자가 있는 경우 \n 다음에 오는 문자열들을 다음줄로 치환 * @param str - 적용할 문자 * @return * */ public static function getEnterkeyChange( str:String ):String { var arr:Array = str.split( "\\n" ); var restr:String = arr.join( "\n" ); arr.length=0; arr=null; return restr; } /** * * http:// , com, org, net, kr, co 이 삽입된 문자열을 찾아 링크값인지 판별해 별도의 배열로 저장시킨다. * @param str - 적용할 문자 * @return * */ public static function getLinkPattern( str:String ):Array { var urlKeys:RegExp = /http:\/\/.*?\.(com|org|net|kr|co)/g; return str.match( urlKeys ); } /** * * 제한시킬 문자를 인자값으로 넘겨서 len만큼만 보여준다. 줄임말은 joinStr로 변경할 수 있다. * @param str - 적용할 문자 * @param len - 제한할 문자수 * @param joinStr - 줄임말 문구 * @return * */ public static function getSelectCropTxt( str:String, len:Number, joinStr:String = "..." ):String { return String( str.substr( 0, len ) + joinStr ); } /** * 영문, 숫자, 특수문자 찾기~ 반환값이 null이면 해당값이 아닌것~ * @param str * @return */ public static function getLangEnCheck( str:String ):Array { var regex:RegExp = /[a-zA-Z\s\d\W]/g; return regex.exec( str ); } /** * ( ~ ~ ~ < ~ > ~ ~&)과 2칸이상 되는 공백 제거 해줌~ * @param str 적용할 문자 * @return */ public static function getClearEscapeCode( str:String ):String { //&로 시작하는 (#xA #xD #x9 lt gt nbsp amp)문자와 //최소대응(.*?)의 모든 문자열(\w)에 ;문자로 끝나는 것이 반복됨(g플래그) 검색~ var regx:RegExp = /&(#x|amp|quot|lt|nbsp|gt).*?\w;/g; // 2칸이상포함하는 공백 하나이상 찾기 var regx2:RegExp = /( )+/g; var descript:String = str.replace( regx, "" ); descript=descript.replace( regx2, "" ); return descript; } /** * 한글만 축출하기~ * @param str * @return */ public static function getKorText( str:String ):String { var regex:RegExp = /[!.,$%&*()?=+#@~가-힣\s\d]/g; var strings:Array = str.match( regex ); return strings.join( "" ); } /** * ByteArray로 한글 2byte, 영문,숫자 1byte 체크 - 반환값이 true면 한글~ * @param str * @return */ public static function getIsKorBytes( str:String ):Boolean { var bytes:ByteArray = new ByteArray(); bytes.writeMultiByte( str, "utf-8" ); return ( bytes.length >= 2 ) ? true : false; } /** * 텍스트를 bytes 단위로 자르기~ * @param str * @param len * @return */ public static function getByteToSplitTxt( str:String, len:Number ):String { var count:int = 0; var resetText:String = ""; var strLen:int = str.length; var txtLen:int = StringUtils.getByteTxtLength( str ); if ( txtLen > len ) { for ( var i:int = 0; i < strLen; i++ ) { var isKor:Boolean = StringUtils.getIsKorBytes( str.charAt( i ) ); count+=( isKor ) ? 2 : 1; if ( count < len ) { resetText+=str.charAt( i ); } else { break; } } return resetText+=".."; } else { return str; } } /** * 택스트 byte단위로 text의 length를 반환한다. * @param str * @return */ public static function getByteTxtLength( str:String ):int { var strLen:int = str.length; var count:int = 0; for ( var i:int = 0; i < strLen; i++ ) { var isKor:Boolean = StringUtils.getIsKorBytes( str.charAt( i ) ); count+=( isKor ) ? 2 : 1; } return count; } /** * 단위에 콤마(,)달기~ * @param str * @param splitStr * @return */ public static function getAddDecimalPointTxt( str:String, splitStr:String = "" ):String { var textSet:Array = str.split( splitStr ); var len:int = textSet.length; var count:int = 0; for ( var i:int = len; i > 0; i-- ) { ++count; if ( count % 3 == 0 ) { textSet.splice( i - 1, 0, "," ); } else { continue; } } return textSet.join( "" ); } /** * 문자열에 제거 하고 싶은 문자열 삽입하여 없애기 * @param str 적용할 텍스트 * @param splitStr 삭제할 텍스트 * @return */ public static function getSplitTxt( str:String, splitStr:String ):String { return ( str.split( splitStr ) ).join( "" ); } /** * 찾아야할 문자열을 입력하면 해당 문자열의 시작 인덱스를 반환~ 없을시엔 -1을 반환 * @param str 검색할 문자열 * @param key 찾아야할 문자열 * @return */ public static function getSearchStrToIndex( str:String, key:String ):int { var index:int = -1; while (( index=str.indexOf( key, index + 1 ) ) != -1 ) { return index; } return -1; } /** * 찾아야할 문자열을 입력하면 해당 문자열의 시작 인덱스를 저장한 배열 반환~ 없을시엔 빈 배열반환~ * @param str 검색할 문자열 * @param key 찾아야할 문자열 * @return */ public static function getSearchStrToIndexs( str:String, key:String ):Array { var index:int = -1; var ids:Array = []; while (( index=str.indexOf( key, index + 1 ) ) != -1 ) { ids.push( index ); } if ( ids.length == 0 ) { ids.push( -1 ); } return ids; } /** * 숫자에 붙는 서수( th, nd, rd, st ) 검색하기- 배열로 반환해 준다. 없다면 length는 0; * 배열 length가 0으로 리턴되는 것은 지워주는 것이 좋다~ * @param str * @return */ public static function getOrdinal( str:String ):Array { var regx:RegExp =/\d(th|nd|rd|st)\b/g; return str.match( regx ); } /** * 숫자에 붙는 서수( th, nd, rd, st )를 검색하여 해당 문자열의 인덱스를 담은 배열 반환~ 없다면 length는 0; * @param str * @return */ public static function getOrdinalIndex( str:String ):Array { var findSet:Array = StringUtils.getOrdinal( str ); var findKey:String; if ( findSet.length == 0 ) { findKey="^^@aa@^^"; findSet=null; } else { findKey=findSet.join( "" ); } var keyIndex:int = StringUtils.getSearchStrToIndex( str, findKey ); var ordinalItems:Array = []; if ( keyIndex != -1 ) { ordinalItems.push( keyIndex + 1 ); ordinalItems.push( keyIndex + 2 ); } return ordinalItems; } /** * 숫자에 붙는 서수( th, nd, rd, st )를 검색하여 true, false 반환~ * @param str * @param id loop 변수를 적용할때 대입한다.( 예- 필드 개수만큼 루프를 돌릴때 ) * @return */ public static function getIsOrdinalIndex( str:String, id:Number = -1 ):Boolean { var ordinals:Array = StringUtils.getOrdinalIndex( str ); if ( ordinals.length != 0 ) { if ( id != -1 ) { if ( ordinals[ 0 ] == id || ordinals[ 1 ] == id ) { return true; } } else { var len:int = str.length; var k:int = -1; while ( ++k < len ) { if ( ordinals[ 0 ] == k || ordinals[ 1 ] == k ) { return true; } } } } return false; } } }
728x90
반응형
'Programming language > Flash' 카테고리의 다른 글
나만 유용한 클래스6 NumberUtils.as (0) | 2012.02.09 |
---|---|
나만 유용한 클래스5~ DefineClass.as (0) | 2012.02.09 |
다 읽지도 않고 jpg 파일 정보 알아내기 (0) | 2012.02.08 |
mac에서 MouseEvent.MOUSE_WHEEL 적용하기.. (0) | 2012.02.08 |
XML에서 이스케이프 시퀀스 삭제해버리기~ ㅎ (0) | 2012.02.08 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Aptana
- react-router-dom
- Vue3
- 자바스크립트
- 아이콘 폰트 만들기
- cordova
- Angular
- 앵귤러
- RefreshToken
- JsDoc
- vue-router
- 반복문
- CSS
- 태그
- 리프래시토큰
- React.StrictMode
- git checkout -b
- interceptors
- svg icon font
- 내장요소
- 코도바
- for of 구문
- icon font
- react
- svg모션
- Intrinsic
- git
- svg 폰트
- IntrinsicElements
- anime.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함