Random Strings

lua-users home
wiki

Generate random strings with defined char-sets using the Lua internal character classes. Idea from Adrian Sietsma.

local Chars = {}

for Loop = 0, 255 do

   Chars[Loop+1] = string.char(Loop)

end

local String = table.concat(Chars)



local Built = {['.'] = Chars}



local AddLookup = function(CharSet)

   local Substitute = string.gsub(String, '[^'..CharSet..']', '')

   local Lookup = {}

   for Loop = 1, string.len(Substitute) do

       Lookup[Loop] = string.sub(Substitute, Loop, Loop)

   end

   Built[CharSet] = Lookup



   return Lookup

end



function string.random(Length, CharSet)

   -- Length (number)

   -- CharSet (string, optional); e.g. %l%d for lower case letters and digits



   local CharSet = CharSet or '.'



   if CharSet == '' then

      return ''

   else

      local Result = {}

      local Lookup = Built[CharSet] or AddLookup(CharSet)

      local Range = table.getn(Lookup)



      for Loop = 1,Length do

         Result[Loop] = Lookup[math.random(1, Range)]

      end



      return table.concat(Result)

   end

end


RecentChanges · preferences
edit · history
Last edited January 6, 2007 4:20 am GMT (diff)