User Tools

Site Tools


vba:cast:techname

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:cast:techname [28.05.2014 16:26:44]
yaslaw [[VBA] techName()]
vba:cast:techname [03.01.2017 16:04:50] (current)
yaslaw
Line 1: Line 1:
 +<​const>​
 +    version=2.1.0
 +    vdate=03.01.2017
 +    fname=cast_techname.bas
 +    ns=%NAMESPACE%
 +    fpath=/​vba/​cast
 +</​const>​
 ====== [VBA] techName() ====== ====== [VBA] techName() ======
-Erstellt aus einem String ein Technischer Name. Ersetzt Leer- und Sonderzeichen durch _, kürzt aus vorgegebene Länge, übersetzt Umlaute etc.+//Erstellt aus einem String ein Technischer Name. Ersetzt Leer- und Sonderzeichen durch _, kürzt aus vorgegebene Länge, übersetzt Umlaute etc.//
  
-{{:​vba:​functions:​udf_techname.bas|Download ​udf_techname.bas}}+==Version %%version%% - %%vdate%%== 
 +{{%%fname%%|Download ​%%fname%% (V-%%version%%)}} 
 + 
 +>Siehe auch [[vba:​cast:​readablename]]
  
 ===== Definition ===== ===== Definition =====
-<​code>​techName(iName[,​ iMaxLen][, iStrConv][, iClearCache])</​code>​+<​code>​techName(iName[,​ iMaxLen[, iStrConv[, ​iDelemiter]]])</​code>​
  
 <code vb>​Public Function techName( _ <code vb>​Public Function techName( _
         ByVal iName As String, _         ByVal iName As String, _
         Optional ByVal iMaxLen As Integer = 255, _         Optional ByVal iMaxLen As Integer = 255, _
-        Optional ByVal As tnStrConv = vbUpperCase,​ _ +        Optional ByVal iStrConv ​As tnStrConv = vbUpperCase,​ _ 
-        Optional ByVal iClearCache ​As Boolean ​False _+        Optional ByVal iDelemiter ​As Variant ​Null _
 ) As String</​code>​ ) As String</​code>​
   ***iName ** Name der gewandelt werden soll   ***iName ** Name der gewandelt werden soll
   ***iMaxLen ** Maximale Länge   ***iMaxLen ** Maximale Länge
   ***iStrConv ** Art der Konvertierung. Lower/​Uper/​Proper-Case   ***iStrConv ** Art der Konvertierung. Lower/​Uper/​Proper-Case
-  ***iClearCache ​** Flag, ob der ObjectCache geleert werden sollWird nur zum testen der Funktion ​gebraucht+  ***iDelemiter ​** DeleimterDefault: Bei Proper Case ""​ ansonsten "​_" ​gebraucht 
 + 
 +=== Enum tnStrConv === 
 +Der Enum ist eigentlich nur eine Auswahl aus vbStrConv 
 +<code vb>​Public Enum tnStrConv 
 +    vbUpperCase = VbStrConv.vbUpperCase ​    '​Alles in Grossbuchstaben ​      -> Standarddelimiter:​ "​_"​ 
 +    vbLowerCase = VbStrConv.vbLowerCase ​    '​Alles in Kleinbuchstaben ​      -> Standarddelimiter:​ "​_"​ 
 +    vbProperCase = VbStrConv.vbProperCase ​  '​Immer erster Buchstabe klein   -> Standarddelimiter:​ ""​ 
 +End Enum</​code>​
  
 ===== Beispiele ===== ===== Beispiele =====
 +> Für die Beispiele verwende ich [[vba:​functions:​print_r:​index]]
 +
 In dem Beispiel mache ich aus dem folgenden Text einen technischen Namen In dem Beispiel mache ich aus dem folgenden Text einen technischen Namen
 <​code>​Bücherpreis [CHF] <​code>​Bücherpreis [CHF]
 bei  Sofortkauf!!!</​code>​ bei  Sofortkauf!!!</​code>​
  
-<code vb>'​Standart +<code vb>'​Standard. Mit UpperCase und _ als Delemiter 
-print_r ​techName("​Bücherpreis [CHF]" & vbcrlf & "​bei ​ Sofortkauf!!!"​)+techName("​Bücherpreis [CHF]" & vbcrlf & "​bei ​ Sofortkauf!!!"​)
 <​String>​ '​BUECHERPREIS_CHF_BEI_SOFORTKAUF'​ <​String>​ '​BUECHERPREIS_CHF_BEI_SOFORTKAUF'​
  
-'auf 16 Zeichen ​begrenzt +'Auf 15 Zeichen ​abgeschnitten 
-print_r ​techName("​Bücherpreis [CHF]" & vbcrlf & "​bei ​ Sofortkauf!!!",​16+techName("​Bücherpreis [CHF]" & vbcrlf & "​bei ​ Sofortkauf!!!", ​15
-<​String>​ 'BUECHERPREIS_CHF'+<​String>​ 'BUECHERPREIS_CH'
  
-'​und ​Kleinbuchstaben +'Lowercase ​und als Trennzeichen ein - 
-print_r ​techName("​Bücherpreis [CHF]" & vbcrlf & "​bei ​ Sofortkauf!!!",​16, vbLowerCase) +techName("​Bücherpreis [CHF]" & vbcrlf & "​bei ​ Sofortkauf!!!",,​vbLowerCase, "​-"​
-<​String>​ 'buecherpreis_chf'</​code>​ +<​String>​ 'buecherpreis-chf-bei-sofortkauf'
- +
-====== Code ====== +
-<code vb udf_techName.bas>​Attribute VB_Name = "​udf_techName"​ +
-'------------------------------------------------------------------------------- +
-'File         : udf_techName.bas +
-' ​              ​Copyright mpl by ERB software +
-' ​              All rights reserved +
-' ​              ​http://​wiki.yaslaw.info/​dokuwiki/​doku.php/​vba/​cast/​strtodate +
-'​Environment ​ : VBA 2007 + +
-'​Version ​     : 1.1 +
-'​Name ​        : techName +
-'​Author ​      : Stefan Erb (ERS) +
-'​History ​     : 05.05.2014 - ERS - Creation +
-' ​              ​28.05.2014 - ERS - tnStrConv hinzugefügt um die unnützen Einträge aus VbStrConv rauszufiltern +
-'​------------------------------------------------------------------------------- +
-Option Explicit +
- +
-Private cacheDictUmlaute ​   As Object +
-Private cacheRxNonWords ​    As Object +
-Private cacheRxTrim ​        As Object +
- +
-Public Enum tnStrConv +
-    vbUpperCase = VbStrConv.vbUpperCase +
-    vbLowerCase = VbStrConv.vbLowerCase +
-End Enum +
- +
-'/** +
-' * Erstellt aus einem String einen technischen Namen +
-' * @param ​ String ​     Name der gewandelt werden soll +
-' * @param ​ Integer ​    ​Maximale Länge +
-' * @param ​ VbStrConv ​  Art der Konvertierung. Lower/​Uper/​Proper-Case +
-' * @param ​ Boolean ​    ​Floag,​ ob der ObjectCache geleert werden soll. Wird nur zum testen der Funktion gebraucht +
-' * @return String +
-' */ +
-Public Function techName( _ +
-        ByVal iName As String, _ +
-        Optional ByVal iMaxLen As Integer = 255, _ +
-        Optional ByVal iStrConv As tnStrConv = vbUpperCase,​ _ +
-        Optional ByVal iClearCache As Boolean = False _ +
-) As String +
-    'Cache der Übersetzungen initialisieren +
-    If cacheDictUmlaute Is Nothing Or iClearCache Then +
-        Set cacheDictUmlaute = CreateObject("​scripting.Dictionary"​) +
-        With cacheDictUmlaute +
-            'Hier weitere Umsetzungen programmieren. Alle in LowerCase +
-            .add "​ä",​ "​ae":​ .add "​ö",​ "​oe":​ .add "​ü",​ "​ue":​ .add "​ß",​ "​ss":​ .add "​é",​ "​e":​ .add "​è",​ "​e"​ +
-        End With +
-    End If +
-    '​Chache des Patterns initializieren +
-    If cacheRxNonWords Is Nothing Or iClearCache Then +
-        Set cacheRxNonWords = CreateObject("​VBScript.RegExp"​) +
-        cacheRxNonWords.pattern = "​([\W_]+)"​ +
-        cacheRxNonWords.Global = True +
-    End If +
-     +
-    If cacheRxTrim Is Nothing Or iClearCache Then +
-        Set cacheRxTrim = CreateObject("​VBScript.RegExp"​) +
-        cacheRxTrim.pattern = "​^_*((?:​[A-Z]|_(?​!$))*)_*$"​ +
-    End If +
-     +
-    techName = LCase(iName) +
-     +
-    '​Umlaute entfernen +
-    Dim k As Variant: For Each k In cacheDictUmlaute.keys +
-        techName = Replace(techName,​ k, cacheDictUmlaute.item(k)) +
-    Next k+
  
-    ​'String Convertierung +'ProperCaseStandarddelmiter ist den dem Fall ""​. Ergibt also ein CamelCase 
-    techName = StrConv(techName,​ iStrConv) +techName("​Bücherpreis [CHF]" ​& vbcrlf & "​bei ​ Sofortkauf!!!",,​vbProperCase
-    'Alle Nicht-Buchstaben durch _ ersezuen +<​String>​ '​BuecherpreischfBeiSofortkauf
-    techName = cacheRxNonWords.Replace(techName, ​"_") +</​code>​
-    '​Führende und folgende _ entfernen +
-    ​techName ​= cacheRxTrim.Replace(techName, ​"$1") +
-    'ggf Länge reduzieren +
-    ​techName = Left(techName,​ iMaxLen)+
  
-End Function</code>+===== Code ===== 
 +<source '​%%fpath%%/%%fname%%'​ vb>
vba/cast/techname.1401287204.txt.gz · Last modified: 28.05.2014 16:26:44 by yaslaw