This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
vba:cast:readablename [08.07.2014 12:09:16] yaslaw created |
vba:cast:readablename [31.08.2015 11:27:41] (current) yaslaw |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | <const> | ||
+ | version=1.1.0 | ||
+ | vdate=28.01.2015 | ||
+ | fname=cast_readablename.bas | ||
+ | ns=%NAMESPACE% | ||
+ | fpath=/vba/cast | ||
+ | </const> | ||
====== [VBA] readableName() ====== | ====== [VBA] readableName() ====== | ||
- | Diese Funktion erstellt aus einem technischen Namen ein halbwegs lesbarer Namen. Ich verwende die Funktion häufig um automatisch generierte Reports mit besser lesbaren Titeln zu versehen. | + | //Diese Funktion erstellt aus einem technischen Namen ein halbwegs lesbarer Namen.// |
- | Insofern ist die Funktion das Gegenpart von [[vba:functions:techname]]. | + | |
+ | ==Version %%version%% - %%vdate%%== | ||
+ | {{%%fname%%|Download %%fname%% (V-%%version%%)}} | ||
+ | |||
+ | >Siehe auch [[vba:cast:techname]] | ||
===== Definition ===== | ===== Definition ===== | ||
Line 24: | Line 35: | ||
Ort</code> | Ort</code> | ||
- | ====== Code ====== | + | ===== Code ===== |
- | <code vb udf_readableName.bas>'------------------------------------------------------------------------------- | + | <source '%%fpath%%/%%fname%%' vb> |
- | 'File : udf_readableName.bas | + | |
- | ' Copyright mpl by ERB software | + | |
- | ' All rights reserved | + | |
- | ' http://wiki.yaslaw.info/dokuwiki/doku.php/vba/cast/strtodate | + | |
- | 'Environment : VBA 2007 + | + | |
- | 'Version : 1.0.1 | + | |
- | 'Name : readableName | + | |
- | 'Author : Stefan Erb (ERS) | + | |
- | 'History : 17.06.2014 - ERS - Creation | + | |
- | ' 08.07.2014 - ERS - kleinere Korrekturen | + | |
- | '------------------------------------------------------------------------------- | + | |
- | Option Explicit | + | |
- | + | ||
- | Public Enum rnTechNameType | + | |
- | rnUnderline 'Die Wörter sind beim technischen Namen mit Unterstriche getrennt. FOO_BAR -> Foo Bar | + | |
- | rnCamelCase 'Die Wörter sind mit CamelCase getrennt. FooBar -> Foo Bar | + | |
- | rnAutomaitc 'Die Funktion findet selber heraus, welcher Type es ist. Kommt ein : im Text for, ist es rnUnderline, ansonsten rnCamelCase | + | |
- | End Enum | + | |
- | + | ||
- | Private rxCacheCamelCase As Object | + | |
- | + | ||
- | '/** | + | |
- | ' * Entspricht dem Gegenteil von techName. macht aus Technischen Namen lesbare Namen | + | |
- | ' * | + | |
- | ' * name = readableName(technischer Name [, Type des technischen Namens]) | + | |
- | ' * | + | |
- | ' * @param String Der Technische Name | + | |
- | ' * @param rnTechNameType Art der Worttrennung | + | |
- | ' * @return String | + | |
- | ' */ | + | |
- | Public Function readableName( _ | + | |
- | ByVal iTechName As String, _ | + | |
- | Optional ByVal iType As rnTechNameType = rnAutomaitc _ | + | |
- | ) As String | + | |
- | Dim words() As String | + | |
- | Dim idx As Integer | + | |
- | + | ||
- | PARSE: | + | |
- | Select Case iType | + | |
- | Case rnAutomaitc | + | |
- | iType = IIf(InStr(iTechName, "_") > 0, rnUnderline, rnCamelCase) | + | |
- | GoTo PARSE 'Try with the neu type | + | |
- | + | ||
- | Case rnUnderline | + | |
- | words = split(iTechName, "_") | + | |
- | + | ||
- | Case rnCamelCase | + | |
- | 'initialize cached regExp | + | |
- | If rxCacheCamelCase Is Nothing Then | + | |
- | Set rxCacheCamelCase = CreateObject("VBScript.RegExp") | + | |
- | rxCacheCamelCase.Global = True | + | |
- | rxCacheCamelCase.pattern = "([A-Z][a-z_]*|[a-z_]+|[\d_]+)" | + | |
- | End If | + | |
- | + | ||
- | If Not rxCacheCamelCase.Test(iTechName) Then | + | |
- | ReDim words(0): words(0) = iTechName | + | |
- | Else | + | |
- | Dim mc As Object: Set mc = rxCacheCamelCase.execute(iTechName) | + | |
- | ReDim words(mc.count - 1): For idx = 0 To mc.count() - 1 | + | |
- | words(idx) = mc(idx) | + | |
- | Next idx | + | |
- | End If | + | |
- | End Select | + | |
- | + | ||
- | readableName = StrConv(join(words, " "), vbProperCase) | + | |
- | End Function</code> | + |