Browse Source

Add isSpace, ltrim, rtrim, trim, rpad, lpad

Pascal Peridont 19 years ago
parent
commit
d2866546ed
1 changed files with 68 additions and 1 deletions
  1. 68 1
      std/StringTools.hx

+ 68 - 1
std/StringTools.hx

@@ -65,9 +65,76 @@ class StringTools {
 		return( slen >= elen && s.substr(slen-elen,elen) == end );
 		return( slen >= elen && s.substr(slen-elen,elen) == end );
 	}
 	}
 
 
+	public static function isSpace( s : String, pos : Int ) : Bool {
+		var c = s.charCodeAt( pos );
+		return (c >= 9 && c <= 13) || c == 32;
+	}
+
+	public static function ltrim( s : String ) : String {
+		var l = s.length;
+		var r = 0;
+		while( r < l && isSpace(s,r) ){
+			r++;
+		}
+		if( r > 0 )
+			return s.substr(r, l-r);
+		else
+			return s;
+	}
+
+	public static function rtrim( s : String ) : String {
+		var l = s.length;
+		var r = 0;
+		while( r < l && isSpace(s,r) ){
+			r++;
+		}
+		if( r > 0 )
+			return s.substr(0, l-r);
+		else
+			return s;
+	}
+
+	public static function trim( s : String ) : String {
+		return ltrim(rtrim(s));
+	}
+
+	public static function rpad( s : String, c : String, l : Int ) : String {
+		var sl = s.length;
+		var cl = c.length;
+		while( sl < l ){
+			if( l - sl < cl ){
+				s += c.substr(0,l-sl);
+				sl = l;
+			}else{
+				s += c;
+				sl += cl;
+			}
+		}
+		return s;
+	}
+
+	public static function lpad( s : String, c : String, l : Int ) : String {
+		var ns = "";
+		var sl = s.length;
+		if( sl >= l ) return s;
+
+		var cl = c.length;
+		while( sl < l ){
+			if( l - sl < cl ){
+				ns += c.substr(0,l-sl);
+				sl = l;
+			}else{
+				ns += c;
+				sl += cl;
+			}
+		}
+		return ns+s;
+	}
+
+
 	#if neko
 	#if neko
 	private static var _urlEncode = neko.Lib.load("std","url_encode",1);
 	private static var _urlEncode = neko.Lib.load("std","url_encode",1);
 	private static var _urlDecode = neko.Lib.load("std","url_decode",1);
 	private static var _urlDecode = neko.Lib.load("std","url_decode",1);
 	#end
 	#end
 
 
-}
+}