package flare.query { import flash.utils.ByteArray; /** * Utility class providing functions for manipulating String * objects. These functions are intended for use by the * Fn operator. */ public class StringUtil { public static function concat(...args):String { return args.join(""); } public static function concat_ws(sep:String, ...args):String { return args.join(sep); } public static function format(x:Number, d:int):String { return x.toFixed(d); } public static function insert(s:String, pos:int, len:int, ns:String):String { var slen:int = s.length; if (pos < 0 || pos > slen) return s; if (len < 0 || len > slen) return s.substring(0,pos)+ns; else return s.substring(0,pos)+ns+s.substring(len); } public static function left(s:String, len:int):String { return s.substring(0, len); } public static function length(s:String):int { return s.length; } public static function lower(s:String):String { return s.toLowerCase(); } public static function lpad(s:String, len:int, pad:String):String { var strlen:int = s.length; if (strlen > len) { return s.substring(0,len); } else if (strlen == len) { return s; } else { var b:ByteArray = new ByteArray(); var padlen:int = pad.length; var diff:int = len - strlen; for (var i:int=0; i diff) b.position = diff; b.writeUTFBytes(s); b.position = 0; return b.readUTFBytes(b.length); } } public static function position(sub:String, s:String):int { return s.indexOf(sub); } public static function reverse(s:String):String { var b:ByteArray = new ByteArray(); for (var i:int=s.length-1; --i>=0; ) { b.writeUTFBytes(s.charAt(i)); } b.position = 0; return b.readUTFBytes(b.length); } public static function repeat(s:String, count:int):String { var b:ByteArray = new ByteArray(); for (var i:int=0; i len) { return s.substring(0,len); } else if (strlen == len) { return s; } else { var b:ByteArray = new ByteArray(); b.writeUTFBytes(s); var padlen:int = pad.length; var diff:int = len - strlen; for (var i:int=0; i