version=1.0.1
vdate=04.09.2019
fname=udf_rndstring.bas
ns=%NAMESPACE%
fpath=/vba/functions
====== [VBA] rndString() ======
//Stellt aufgrund eines Patterns ein Zufallstext zusammen. zB. für ein Passwortgenerator//
==Version %%version%% - %%vdate%%==
{{%%ns%%:%%fname%%|Download %%fname%% (V-%%version%%)}}
===== Definition =====
String = rndString(pattern)'/**
' * Erstellt ein Zfallswerd gemäss Patterndefinition
' * @example rndString("L(a{10}[\#\_\-\|])") -> fo2kvnx1#c8z725
' * @param String Pattern
' * @return String
' */
Public Function rndString(ByVal iPattern As String) As String
==== Patterns ====
Die Anwendungen findest du in den Beispielen
=== Zeichenpattern ===
***a** Lower-Case Alphanumeric ''abcdefghijklmnopqrstuvwxyz 0123456789''
***A** Mixed-Case Alphanumeric ''ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789''
***U** Upper-Case Alphanumeric ''ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789''
***d** Digit ''0123456789''
***h** Lower-Case Hex Character ''0123456789 abcdef''
***H** Upper-Case Hex Character ''0123456789 ABCDEF''
***l** Lower-Case Letter ''abcdefghijklmnopqrstuvwxyz''
***L** Mixed-Case Letter ''ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz''
***u** Upper-Case Letter ''ABCDEFGHIJKLMNOPQRSTUVWXYZ''
***p** Punctuation '',.;:''
***b** Bracket ''()[]{}<>''
***s** Printable 7-Bit Special Character ''!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~''
***S** Printable 7-Bit ASCII ''A-Z, a-z, 0-9, !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~''
=== Steuerpattern ===
***[...]** Mehrfachauswahl. Eines der Pattern davon wird verwendet
***{#}** Anzahl Zeichen
***{#,#}** Mindestens und Maximal Anzahl Zeichen
***(...)** Alle Patterns innerhalb der Klammern kommen vor. Die Reihenfolge wird gemischt
***\** Das folgende Zeichen ist kein Pattern sondern das Zeichen selber
***^*** Das folgende Zeichen/Pattern wird von vorgehenden Pattern abgezogen. ''a^d'' entspricht somit dem ''l''
===== Beispiele =====
Einfache Beispiele.
'5 Zeichen aus dem Sortiment a-zA-Z0-9
?rndString("A{5}")
V6lfN
'Im Vergleich dazu, 5 mal den Buchstaben a
?rndString("\a{5}")
aaaaa
'5 Zeichen, die entweder ein Punkt- oder ein Klammerzeichen oder ein Kleinbuchstabe sind
?rndString("[pbl]{5}")
f>;g(
'dasselbe, aber mindestesn 4 Zeichen, maximal 10 Zeichen
?rndString("[pbl]{4, 10}")
{}m>,>ion]
Zusammengesetzt Pattern
'Ein Buchstabe (Gross und Klein). gefolgt von 2 Ziffern.
'Dann ein Satzzeichen oder ein Klammerzeichen und zum Schluss nochmals ein Buchstaben
?rndString("Ld{2}[pb]L")
z06[z
'dasselbe. Aber abgeseehn vom ersten Zeichen ist der Rest in () gefasst und wird somit wild gemischt
?rndString("L(d{2}[pb]L)")
r.R76
Zeichen aus einem Pattern ausschliessen mit ^
'16 Ziffern ohne die 0
?rndString("d^\0{16}")
6719115112343998
'10 Sonderzeichen ohne Klammern und Punkte
?rndString("s^[pb]{10}")
%*"|?+'`=&
Und noch ein nützliches Beispiel.
'Ein Passwort. Beginnt mit einem Buchstaben.
'Dann kommt ein Teil, bestehend aus 8 Buchstaben+Zahlen und 2 Sonderzeichen ohne Punkte und Klammern.
?rndString("L(a{8}s^[pb]{2})")
C$zr%i6z3md
===== Code =====