Flex (actionscript3.0)字符串处理类MyStringUtils.as

做项目的过程中,难免要用到一些个公共的处理类,比如 字符串 日期 格式化 数组等。本人写的一个字符串处理类,希望大家指点交流。

功能包括:

1,处理xml相关的字符,因为在跟后台java打交道时,这个问题经常遇到:把xml里面的特殊字符转换成替代字符

2,判断空

3,去除两头的空格

4,取得指定字符在串中的位置

5,截取字符串

6,从开始下标截取一定长度的字符串

7,将字符串转换为数组

8,替换字符串

9,替换全部字符串

10,反转字符: abc==>cba

11,取得某个字符的ASCII码

12,取得某个位置的字符

13,大小写转换

14,将字符转换成boolean值

15,去除头部的空格

16,去除尾部的空格

17,是否以某个字符串开头

18,是否以某个字符串开头[忽略大小写]

19,判断是否以某个字符串结尾

20,判断是否以某个字符串结尾[忽略大小写]

21,判断是否是数字

22,比较是否相同

23,按照某个标识分割成数组

24,判断是否包含

25,与UTF-8编码的相互转换

  1. //
  2. //  My System
  3. //  Copyright 2008-2009 My Systems Incorporated
  4. //  All Rights Reserved.
  5. //
  6. //  NOTICE: My System permits you to use, modify, and distribute this file
  7. //  Langversion ActionScript 3.0
  8. //  playerversion Flash 9.0
  9. //  DATE: 2008-12-04 keren
  10. //  QQ: 994251681
  11. //  MSN: keren1515@hotmail.com
  12. //
  13. package org.app.utils.common
  14. {
  15.     import mx.utils.StringUtil;
  16.     /**
  17.      * 注意:/unnnn,表示十六进制的unicode编码;
  18.      *      /xnn ,表示十六进制的ascii编码;
  19.      */ 
  20.     public class MyStringUtils
  21.     {
  22.         private static var instance:MyStringUtils;
  23.         public static function getInstance():MyStringUtils{
  24.             if(instance == null){
  25.                 instance = new MyStringUtils(new SingletonEnforcer());
  26.             }
  27.             return instance;
  28.         }
  29.         public function MyStringUtils(enforcer:SingletonEnforcer)
  30.         {
  31.             if(enforcer==null)throw new Error("This class is singletonEnforcer.");
  32.         }
  33.         
  34.         public static var C_EMPTY:String = "";//空
  35.         public static var C_BLANK:String = " ";//空格
  36.         public static var C_NEW_LINE:String = "/n";//新行
  37.         public static var C_TAB:String = "/t";//Tab符
  38.         public static var C_BACKSAPCE:String = "/b";//回退符
  39.         public static var C_NEXTPAGE:String = "/f";//制表符(换页格式符)
  40.         public static var C_RETURN:String = "/r";//回车符
  41.         /** 用在 encodeXML(String) 和 decodeXML(String) */
  42.         private var translateArray:Array = [
  43.             [ "&", "&" ],//这个要放在第一位
                [ " ", " "],
                [ "<", "&lt;" ],
                [ ">", "&gt;" ],
                [ "/"", "&quot;" ],
                [ "'", "&apos;" ],
                [ "", "&szlig;" ],
                [ "/"", "&quot;" ]
  44.         ];
  45.         
  46.         /**
  47.          * 把xml里面的特殊字符转换成替代字符
  48.          */ 
  49.         public function encodeXML(text:String):String{
  50.             var s:String = text;
  51.             for (var i:int = 0; i < translateArray.length; i++) {
  52.                 s = this.replaceAll(s, translateArray[i][0], translateArray[i][1]);
  53.             }
  54.             return s;
  55.         }
  56.         /**
  57.          * 把替代字符还原成xml字符
  58.          */
  59.         public function decodeXML(text:String):String{
  60.             var s:String = text;
  61.             for (var i:int = 0; i < translateArray.length; i++) {
  62.                 s = this.replaceAll(s, translateArray[i][1], translateArray[i][0]);
  63.             }
  64.             return s;
  65.         }
  66.         
  67.         /**
  68.          * 判断空
  69.          */ 
  70.         public function isEmpty(str:String):Boolean{
  71.             if(str == null)return true;
  72.             str = this.trim(str);
  73.             if(str == null || str.length<=0)return true;
  74.             return false;
  75.         }
  76.         
  77.         /**
  78.          * 去除两头的空格
  79.          */ 
  80.         public function trim(str:String):String{
  81.             return StringUtil.trim(str);
  82.         }
  83.         
  84.         /**
  85.          * 取得字符串位置
  86.          * @param String src 操作的字符串
  87.          * @param String str 匹配的串
  88.          * @param int index 开始的位置[默认值:0]
  89.          * 
  90.          * @return int 返回匹配的位置,-1表示没有匹配的
  91.          */ 
  92.         public function indexOf(src:String, str:String, index:int=0):int{
  93.             //if(this.isEmpty(src)||this.isEmpty(str))return -1;
  94.             return src.indexOf(str,index);
  95.         }
  96.         /**
  97.          * 取得字符串位置
  98.          * @param String src 操作的字符串
  99.          * @param String str 匹配的串
  100.          * @param int index 开始的位置[默认值:字符串长度-1]
  101.          * 
  102.          * @return int 返回匹配的位置,-1表示没有匹配的
  103.          */ 
  104.         public function lastIndexOf(src:String, str:String, index:int=-1):int{
  105.             //if(this.isEmpty(src)||this.isEmpty(str))return -1;
  106.             //if(index==-1)index=src.length-1;//默认值:字符串长度-1
  107.             //return src.lastIndexOf(str,index);
  108.             
  109.             if(index == -1)
  110.                 return src.lastIndexOf(str);
  111.             else
  112.                 return src.lastIndexOf(str, index);
  113.         }
  114.         
  115.         /**
  116.          * 截取字符串
  117.          * [注] 1,substring方法中,如果参数为负数,会自动转化为0;
  118.          *      2,substring方法中,如果结束下标小于开始下标,表示反向截取;
  119.          * @param String src 源串
  120.          * @param int start 起始位置
  121.          * @param int end 结束位置
  122.          * 
  123.          * @return String 截取的串
  124.          */ 
  125.         public function subString(src:String, index_start:int=0, 
  126.                                 index_end:int=-1):String{
  127.             if(index_end ==-1){
  128.                 return src.substring(index_start);
  129.             }else{
  130.                 return src.substring(index_start, index_end);
  131.             }
  132.         }
  133.         
  134.         /**
  135.          * 从开始下标截取一定长度的字符串
  136.          * [注]start:-1表示倒数第一个字符;-2表示倒数第二个字符,依次类推;
  137.          *     若指定的长度超过了剩余的长度,则取剩余的全部长度;
  138.          * @param String src 源串
  139.          * @param int start 开始位置
  140.          * @param int length 截取长度
  141.          * 
  142.          * @return String 截取的串
  143.          */ 
  144.         public function substr(src:String, start:int, length:int=-1):String{
  145.             if(length ==-1){
  146.                 return src.substr(start);
  147.             }else{
  148.                 return src.substr(start, length);
  149.             }
  150.         }
  151.         
  152.         // search(正则表达式) match()?????/
  153.         
  154.         /**
  155.          * 将字符串转换为数组
  156.          * @param String src 源串
  157.          * @param String ch 标识串
  158.          * 
  159.          * @return Array 以标识分割的字符串数组
  160.          */ 
  161.         public function toArray(src:String, ch:String):Array{
  162.             return src.split(ch);
  163.         }
  164.         
  165.         /**
  166.          * 替换字符串
  167.          * @param String src 源串
  168.          * @param String from_ch 被替换的字符
  169.          * @param String to_ch 替换的字符
  170.          * @param Boolean rp_all 是否替换掉全部匹配字符,true:是|false:否
  171.          * 
  172.          * @return String 结果字符串
  173.          */ 
  174.         public function replace(src:String, from_ch:String, 
  175.                         to_ch:String, rp_all:Boolean=false):String{
  176.             while(src.indexOf(from_ch)!=-1){
  177.                 src = src.replace(from_ch, to_ch);
  178.                 if(!rp_all)return src;
  179.             }
  180.             return src;
  181.         }
  182.         /**
  183.          * 替换全部字符串
  184.          * @param String src 源串
  185.          * @param String from_ch 被替换的字符
  186.          * @param String to_ch 替换的字符
  187.          * 
  188.          * @return String 结果字符串
  189.          */ 
  190.         public function replaceAll(src:String, from_ch:String,
  191.                                 to_ch:String):String{
  192.             return src.split(from_ch).join(to_ch);
  193.         }
  194.         
  195.         /**
  196.          * 反转字符: abc==>cba
  197.          * @param String src 源串
  198.          * 
  199.          * @return String 反转之后的串
  200.          */ 
  201.         public function reverse(src:String):String{
  202.             var arr:Array = src.split("");
  203.             arr = arr.reverse();
  204.             return arr.join("");
  205.         }
  206.         
  207.         /**
  208.          * 取得某个字符的ASCII码
  209.          */ 
  210.         public function charCodeAt(src:String, index:int):int{
  211.             return src.charCodeAt(index);
  212.         }
  213.         
  214.         /**
  215.          * 取得某个位置的字符
  216.          */ 
  217.         public function charAt(src:String, index:int):String{
  218.             return src.charAt(index);
  219.         }
  220.         
  221.         /**
  222.          * 大小写转换
  223.          */ 
  224.         public function toUpperCase(src:String):String{
  225.             return src.toUpperCase();
  226.         }
  227.         public function toLowerCase(src:String):String{
  228.             return src.toLowerCase();
  229.         }
  230.         
  231.         /**
  232.          * 将字符转换成boolean值
  233.          */ 
  234.         public function booleanValue(src:String):Boolean{
  235.             var trimmed:String = this.trim(src).toLowerCase();
  236.             return trimmed == "true"
  237.                 || trimmed == "t"
  238.                 || trimmed == "yes"
  239.                 || trimmed == "1";
  240.         }
  241.         
  242.         /**
  243.          * 去除头部的空格
  244.          */ 
  245.         public function trimLeadingWhitespace(src:String):String{
  246.             var ch:String;
  247.             var index:int = 0;
  248.             while((ch = src.charAt(index)) == C_BLANK){
  249.                 index++;
  250.             }
  251.             return this.subString(src, index);
  252.         }
  253.         /**
  254.          * 去除尾部的空格
  255.          */ 
  256.         public function trimTrailingWhitespace(src:String):String{
  257.             var ch:String;
  258.             var index:int = src.length-1;
  259.             while((ch = src.charAt(index)) == C_BLANK){
  260.                 index--;
  261.             }
  262.             return this.subString(src, 0, index+1);//注意这里要+1
  263.         }
  264.         
  265.         /**
  266.          * 是否以某个字符串开头
  267.          */ 
  268.         public function startsWith(src:String, prefix:String):Boolean{
  269.             if(this.isEmpty(src) || this.isEmpty(prefix)) return false;
  270.             if(src.length < prefix.length) return false;
  271.             return src.indexOf(prefix) == 0;
  272.         }
  273.         
  274.         /**
  275.          * 是否以某个字符串开头[忽略大小写]
  276.          */
  277.         public function startsWithIgnoreCase(src:String, prefix:String):Boolean{
  278.             if(this.isEmpty(src) || this.isEmpty(prefix)) return false;
  279.             if(src.length < prefix.length) return false;
  280.             var tmp:String = src.toLowerCase();
  281.             var s:String = prefix.toLowerCase();
  282.             return tmp.indexOf(s) == 0;
  283.         }
  284.         /**
  285.          * 是否以某个字符串结尾
  286.          */
  287.         public function endsWith(src:String, suffix:String):Boolean{
  288.             if(this.isEmpty(src) || this.isEmpty(suffix)) return false;
  289.             if(src.length < suffix.length) return false;
  290.             return src.lastIndexOf(suffix) == src.length - suffix.length;
  291.         }
  292.         /**
  293.          * 是否以某个字符串结尾[忽略大小写]
  294.          */
  295.         public function endsWithIgnoreCase(src:String, suffix:String):Boolean{
  296.             if(this.isEmpty(src) || this.isEmpty(suffix)) return false;
  297.             if(src.length < suffix.length) return false;
  298.             var tmp:String = src.toLowerCase();
  299.             var s:String = suffix.toLowerCase();
  300.             return tmp.lastIndexOf(s) == tmp.length - s.length;
  301.         }
  302.         
  303.         /**
  304.          * 是否是数字
  305.          */ 
  306.         public function isNumeric(src:String):Boolean{
  307.             if (this.isEmpty(src)) return false;
  308.             var regx:RegExp = /^[-+]?/d*/.?/d+(?:[eE][-+]?/d+)?$/;
  309.             return regx.test(src);
  310.         }
  311.         
  312.         /**
  313.          * 是否相同
  314.          */ 
  315.         public function equals(src:String, dest:String):Boolean{
  316.             return src == dest;//?????
  317.         }
  318.         public function equalsIgnoreCase(src:String, dest:String):Boolean{
  319.             var t:String = src.toLowerCase();
  320.             var s:String = dest.toLowerCase();
  321.             return s == t;//?????
  322.         }
  323.         
  324.         /**
  325.          * 按照某个标识分割成数组
  326.          */ 
  327.         public function split(src:String, flg:String):Array{
  328.             return src.split(flg);
  329.         }
  330.         
  331.         /**
  332.          * 包含
  333.          */ 
  334.         public function contains(src:String, flg:String):Boolean{
  335.             return src.indexOf(flg) !=- 1;
  336.         }
  337.         
  338.         /**
  339.          * 把字符串转换成UTF-8的编码
  340.          */ 
  341.         public function encodeUTF(src:String):String{
  342.             return encodeURIComponent(src);
  343.         }
  344.         /**
  345.          * 从UTF-8转换成原来的编码
  346.          */ 
  347.         public function decodeUTF(src:String):String{
  348.             return decodeURIComponent(src);
  349.         }
  350.         
  351.         
  352.         
  353.         
  354.     }//end class
  355.     
  356. }//end package
  357. /**
  358.  * 这里使用了一个内部类 SingletonEnforcer ,
  359.  * 在类对外是无法访问的,所以巧妙的阻止了用new来创建,
  360.  * 但还是能使用 new Singleton(null) 来创建。
  361.  */
  362. class SingletonEnforcer {}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值