工具类对象: StringUtils.as
工具类函数:
- xml字符处理
- 为空判断
- 两头空格去除
- 指定字符在字符串中的位置获取
- 字符串截取
- 从开始下标截取一定长度的字符串
- 将字符串转换为数组
- 替换字符串
- 替换全部字符串
- 反转字符
- 字符的ASCII码获取
- 取得某个位置的字符
- 大小写转换
- 将字符转换成boolean值
- 去除头部的空格
- 去除尾部的空格
- 是否某个字符串开头
- 是否某个字符串开头[忽略大小写]
- 是否某个字符串结尾
- 是否某个字符串结尾[忽略大小写]
- 是否是数字
- 是否相同
- 是否包含
- 按某个标识分割成数组
- 与UTF-8编码的相互转换
package com.zhongjyuan.utils
{
import mx.utils.StringUtil;
/**
* 字符串工具类
* @author zhongjyuan
* 2023年5月30日15:28:11
*/
public class StringUtils
{
/**
* 实例对象
*/
private static var instance:StringUtils;
/**
* 获取实例
* @return
*/
public static function getInstance():StringUtils
{
if (instance == null)
{
instance=new StringUtils(new SingletonEnforcer());
}
return instance;
}
/**
* 构造函数(单例)
* @param enforcer
* @throws Error
*/
public function StringUtils(enforcer:SingletonEnforcer)
{
if (enforcer == null)
throw new Error("This class is singletonEnforcer.");
}
/**
* 空
*/
public static var C_EMPTY:String="";
/**
* 空格
*/
public static var C_BLANK:String=" ";
/**
* 换行
*/
public static var C_NEW_LINE:String="/n";
/**
* Tab符
*/
public static var C_TAB:String="/t";
/**
* 回退符
*/
public static var C_BACKSAPCE:String="/b";
/**
* 制表符
*/
public static var C_NEXTPAGE:String="/f";
/**
* 回车符
*/
public static var C_RETURN:String="/r";
/**
* 用在 encodeXML(String) 和 decodeXML(String)
*/
private var translateArray:Array=[["&", "&"], [" ", " "], ["<", "<"], [">", ">"], ["\"", "\""], ["'", "'"], ["", "ß"], ["\"", "\""]];
/**
* 替换xml中的特殊字符
* @author: zhongjyuan
* 2023年5月30日15:35:34
* @param text xml内容文本
* @return string 处理完成的内容文本
*/
public function encodeXML(text:String):String
{
var s:String=text;
for (var i:int=0; i < translateArray.length; i++)
{
s=this.replaceAll(s, translateArray[i][0], translateArray[i][1]);
}
return s;
}
/**
* 还原xml中的特殊字符
* @author zhongjyuan
* 2023年5月30日15:36:03
* @param text xml内容文本
* @return string 处理完成的内容文本
*/
public function decodeXML(text:String):String
{
var s:String=text;
for (var i:int=0; i < translateArray.length; i++)
{
s=this.replaceAll(s, translateArray[i][1], translateArray[i][0]);
}
return s;
}
/**
* 是否为空
* @author zhongjyuan
* 2023年5月30日15:37:08
* @param text 内容文本
* @return boolean 判断结果
*/
public function isEmpty(text:String):Boolean
{
if (text == null)
return true;
text=this.trim(text);
if (text == null || text.length <= 0)
return true;
return false;
}
/**
* 去除空格
* @author zhongjyuan
* 2023年5月30日15:37:55
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function trim(text:String):String
{
return StringUtil.trim(text);
}
/**
* 字符位置
* @author zhongjyuan
* 2023年5月30日15:39:28
* @param text 内容文本
* @param target 目标字符
* @param index 开始位置[默认0]
* @return int 字符位置(-1表示不存在)
*/
public function indexOf(text:String, target:String, index:int=0):int
{
return text.indexOf(target, index);
}
/**
* 字符位置
* @author zhongjyuan
* 2023年5月30日15:43:36
* @param text 内容文本
* @param target 目标字符
* @param index 开始位置[默认-1]
* @return int 字符位置(-1表示不存在)
*/
public function lastIndexOf(text:String, target:String, index:int=-1):int
{
if (index == -1)
return text.lastIndexOf(target);
else
return text.lastIndexOf(target, index);
}
/**
* 截取
* [注] 1,substring方法中,如果参数为负数,会自动转化为0;
* 2,substring方法中,如果结束下标小于开始下标,表示反向截取;
* @author zhongjyuan
* 2023年5月30日15:47:09
* @param text 内容文本
* @param index_start 起始位置
* @param index_end 结束位置
* @return string 处理完成的内容文本
*/
public function subString(text:String, index_start:int=0, index_end:int=-1):String
{
if (index_end == -1)
{
return text.substring(index_start);
}
else
{
return text.substring(index_start, index_end);
}
}
/**
* 截取
* [注]start:-1表示倒数第一个字符;-2表示倒数第二个字符,依次类推;
* 若指定的长度超过了剩余的长度,则取剩余的全部长度;
* @author zhongjyuan
* 2023年5月30日15:47:15
* @param text 内容文本
* @param start 开始位置
* @param length 截取长度
* @return string 处理完成的内容文本
*/
public function substr(text:String, start:int, length:int=-1):String
{
if (length == -1)
{
return text.substr(start);
}
else
{
return text.substr(start, length);
}
}
/**
* 分割
* @author zhongjyuan
* 2023年5月30日15:51:29
* @param text 内容文本
* @param delimiter 切割字符
* @return Array 字符串的数组
*/
public function split(text:String, delimiter:String):Array
{
return text.split(delimiter);
}
/**
* 替换
* @author zhongjyuan
* 2023年5月30日15:54:06
* @param text 内容文本
* @param origin 源字符
* @param target 替换字符
* @param all 替换所有
* @return string 处理完成的内容文本
*/
public function replace(text:String, origin:String, target:String, all:Boolean=false):String
{
while (text.indexOf(origin) != -1)
{
text=text.replace(origin, target);
if (!all)
return text;
}
return text;
}
/**
* 替换
* @author zhongjyuan
* 2023年5月30日15:57:16
* @param text 内容文本
* @param origin 源字符
* @param target 替换字符
* @return string 处理完成的内容文本
*/
public function replaceAll(text:String, origin:String, target:String):String
{
return text.split(origin).join(target);
}
/**
* 反转
* @author zhongjyuan
* 2023年5月30日15:58:33
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function reverse(text:String):String
{
var arr:Array=text.split("");
arr=arr.reverse();
return arr.join("");
}
/**
* 字符ASCII码
* @author zhongjyuan
* 2023年5月30日15:59:28
* @param text 内容文本
* @param index 字符位置
* @return int ASCII码
*/
public function charCodeAt(text:String, index:int):int
{
return text.charCodeAt(index);
}
/**
* 字符位置
* @author zhongjyuan
* 2023年5月30日16:01:13
* @param text 内容文本
* @param index 字符位置
* @return string 字符
*/
public function charAt(text:String, index:int):String
{
return text.charAt(index);
}
/**
* 转大写
* @author zhongjyuan
* 2023年5月30日16:02:07
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function toUpperCase(text:String):String
{
return text.toUpperCase();
}
/**
* 转小写
* @author zhongjyuan
* 2023年5月30日16:02:52
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function toLowerCase(text:String):String
{
return text.toLowerCase();
}
/**
* 转Boolean
* @author zhongjyuan
* 2023年5月30日16:03:53
* @param text 内容文本
* @return boolean 转换值
*/
public function booleanValue(text:String):Boolean
{
var trimmed:String=this.trim(text).toLowerCase();
return trimmed == "true" || trimmed == "t" || trimmed == "yes" || trimmed == "1";
}
/**
* 头部空格去除
* @author zhongjyuan
* 2023年5月30日16:05:49
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function trimLeadingWhitespace(text:String):String
{
var index:int=0;
var origin:String;
while ((origin=text.charAt(index)) == C_BLANK)
{
index++;
}
return this.subString(text, index);
}
/**
* 尾部空格去除
* @author zhongjyuan
* 2023年5月30日16:06:44
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function trimTrailingWhitespace(text:String):String
{
var origin:String;
var index:int=text.length - 1;
while ((origin=text.charAt(index)) == C_BLANK)
{
index--;
}
return this.subString(text, 0, index + 1);
}
/**
* 字符开头
* @author zhongjyuan
* 2023年5月30日16:07:44
* @param text 内容文本
* @param suffix 匹配字符串
* @return boolean 是否匹配
*/
public function startsWith(text:String, suffix:String):Boolean
{
if (this.isEmpty(text) || this.isEmpty(suffix))
return false;
if (text.length < suffix.length)
return false;
return text.indexOf(suffix) == 0;
}
/**
* 字符开头[忽略大小写]
* @author zhongjyuan
* 2023年5月30日16:07:44
* @param text 内容文本
* @param suffix 匹配字符串
* @return boolean 是否匹配
*/
public function startsWithIgnoreCase(text:String, suffix:String):Boolean
{
if (this.isEmpty(text) || this.isEmpty(suffix))
return false;
if (text.length < suffix.length)
return false;
return text.toLowerCase().indexOf(suffix.toLowerCase()) == 0;
}
/**
* 字符结尾
* @author zhongjyuan
* 2023年5月30日16:10:49
* @param text 内容文本
* @param suffix 匹配字符串
* @return boolean 是否匹配
*/
public function endsWith(text:String, suffix:String):Boolean
{
if (this.isEmpty(text) || this.isEmpty(suffix))
return false;
if (text.length < suffix.length)
return false;
return text.lastIndexOf(suffix) == text.length - suffix.length;
}
/**
* 字符结尾[忽略大小写]
* @author zhongjyuan
* 2023年5月30日16:13:07
* @param text 内容文本
* @param suffix 匹配字符串
* @return boolean 是否匹配
*/
public function endsWithIgnoreCase(text:String, suffix:String):Boolean
{
if (this.isEmpty(text) || this.isEmpty(suffix))
return false;
if (text.length < suffix.length)
return false;
var tmp:String=text.toLowerCase();
var s:String=suffix.toLowerCase();
return tmp.lastIndexOf(s) == tmp.length - s.length;
}
/**
* 是否数字
* @author zhongjyuan
* 2023年5月30日16:13:57
* @param text 内容文本
* @return boolean 是否数字
*/
public function isNumber(text:String):Boolean
{
if (this.isEmpty(text))
return false;
var regx:RegExp="/^[-+]?/d*/.?/d+(?:[eE][-+]?/d+)?$/";
return regx.test(text);
}
/**
* 是否包含
* @author zhongjyuan
* 2023年5月30日16:17:47
* @param text 内容文本
* @param suffix 匹配字符串
* @return boolean 是否包含
*/
public function contains(text:String, suffix:String):Boolean
{
return text.indexOf(suffix) != -1;
}
/**
* 是否相同
* @author zhongjyuan
* 2023年5月30日16:14:56
* @param origin 源内容文本
* @param targe 目标内容文本
* @return boolean 是否相同
*/
public function equals(origin:String, targe:String):Boolean
{
return origin == targe;
}
/**
* 是否相同[忽略大小写]
* @author zhongjyuan
* 2023年5月30日16:16:33
* @param origin 源内容文本
* @param targe 目标内容文本
* @return boolean 是否相同
*/
public function equalsIgnoreCase(origin:String, targe:String):Boolean
{
return origin.toLowerCase() == targe.toLowerCase();
}
/**
* 转UTF-8编码
* @author zhongjyuan
* 2023年5月30日16:18:55
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function encodeUTF(text:String):String
{
return encodeURIComponent(text);
}
/**
* 还原UTF-8编码
* @author zhongjyuan
* 2023年5月30日16:19:37
* @param text 内容文本
* @return string 处理完成的内容文本
*/
public function decodeUTF(text:String):String
{
return decodeURIComponent(text);
}
}
}
/**
* 内部类(阻止StringUtils对象通过new进行实例化)
* @author zhongjyuan
* 2023年5月30日16:21:01
*/
class SingletonEnforcer
{
}