--- Revision None +++ Revision 323136613639 @@ -0,0 +1,78 @@ +Option Explicit + +Class cls_List + Public Head + Public Tail +End Class + +Function fun_cons(head, tail) + Dim list + Set list = New cls_List + list.Head = head + Set list.Tail = tail + Set fun_cons = list +End Function + +Function fun_rev(list, rev) + If list Is Nothing Then + Set fun_rev = rev + Else + Set fun_rev = fun_rev(list.Tail, fun_cons(list.Head, rev)) + End If +End Function + +Function fun_join(list, sep) + If list Is Nothing Then + fun_join = "" + Else + If list.Tail Is Nothing Then + fun_join = list.Head + Else + fun_join = list.Head & sep & fun_join(list.Tail, sep) + End If + End If +End Function + +Function fun_div(s, n) + If Len(s) = "" Then + Set fun_div = Nothing + Else + Dim list + Set list = Nothing + + Dim i + + For i = 1 + n To Len(s) Step n + Set list = fun_cons(Mid(s, i - n, n), list) + Next + + Set list = fun_cons(Mid(s, i - n, Len(s) - (i - n) + 1), list) + + Set fun_div = fun_rev(list, Nothing) + End If +End Function + +Function fun_format(num, n, sep) + Dim r + r = StrReverse(num) + Set r = fun_div(r, n) + r = fun_join(r, sep) + r = StrReverse(r) + fun_format = r +End Function + +Sub fun_main() + Call WScript.Echo(fun_format("", 3, ",")) + Call WScript.Echo(fun_format("0", 3, ",")) + Call WScript.Echo(fun_format("90", 3, ",")) + Call WScript.Echo(fun_format("890", 3, ",")) + Call WScript.Echo(fun_format("7890", 3, ",")) + Call WScript.Echo(fun_format("67890", 3, ",")) + Call WScript.Echo(fun_format("567890", 3, ",")) + Call WScript.Echo(fun_format("4567890", 3, ",")) + Call WScript.Echo(fun_format("34567890", 3, ",")) + Call WScript.Echo(fun_format("234567890", 3, ",")) + Call WScript.Echo(fun_format("1234567890", 3, ",")) +End Sub + +fun_main