| |
VB.NET - Ein- und UmsteigerString.Format in erweiterter Form | | | Autor: akop303 | Datum: 02.09.15 15:05 |
| Hallo Leute,
ich arbeite gerade an einem großem Projekt für die Firma. Auch wenn dieser noch am Anfang steht, ist es abzusehen das eine Bestimmte Funktion immer wieder benötigt wird.
In einem String müssen an verschiedenen Stellen mehrere Datensätze durch einen bestimmten Zeichen getrennt, eingefügt werden.
Dafür habe ich folgende Funktion geschrieben:
Public Function FormatWithLines(TextPattern As String, LinePattern() As String, _
params()()() As Object, Optional lineSeparator As String = vbCrLf) As String
Dim lines As New List(Of String)
For a As Integer = 0 To LinePattern.Length - 1
Dim tmpLines As New List(Of String)
Dim Pattern As String = LinePattern(a)
For i As Integer = 0 To params(a).Length - 1
tmpLines.Add(String.Format(Pattern, params(a)(i)))
Next
lines.Add(String.Join(lineSeparator, tmpLines))
Next
Return String.Format(TextPattern, lines.ToArray())
End Function In den meisten Fällen(z.B. Export Funktionen, Erstellung der Rechnungen usw.) müssten dann die Daten so wie so erst mal gesammelt werden und der Aufruf sieht dann wahrscheinlich nicht so schlimm aus.
Nun arbeite ich gerade an einer Datenbank-Schnittstelle, die Unterschiedliche Datenbanken unterstützen soll und aber außer SELECT, UPDATE und so weiter auch CREATE TABLE, CREATE INDEX und co. unterstützen soll. Unter anderen auch MS SQL und z.B. Interbase. Die Beiden haben aber teilweise unterschiedliches Syntax für die Änderungen an der Struktur, dementsprechend müssen die SQLs nach verschiedenen Schemas aufgebaut sein.
Meine Idee war es diese Funktion dafür zu verwenden.
Der Aufruf ist dann aber ziemlich unleserlich
z.B.:
FormatWithLines("Test1 {0} {1}", {"{0}{1}", "{0}-{1}-{2}"}, {New Object()() _
{New Object() {"t", 1}, New Object() {"t", 2}}, New Object()() {New Object() _
{1, 2, 3}}}, ",") ' Ergibt: "Test1 t1,t2 1-2-3" Meine Frage:
Gibt es dafür fertige Lösungen? Oder hat jemand eine Idee, wie es einfacher(leserlicher) gehen kann?
Mit freundlichen Grüßen
akop303
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
Re: String.Format in erweiterter Form | | | Autor: Manfred X | Datum: 02.09.15 15:45 |
| Wo bekommst Du diese Angaben zu der Gestaltung des Textes her?
Die werden wohl kaum hart codiert.
Zudem sind vermutlich bestimmte Schablonen für die Gestaltung
der verschiedenen Textsorten möglich, wobei einzufügende Textabschnitte
jeweils in ein bestimmtes Feld der Schablone gehören.
Falls Schablonen nicht möglich sind, würde ich eine Klasse erstellen,
deren Instanzen jeweils einen einzufügenden Textabschnit enthalten
plus Startposition im Text plus Formatangabe(n) - eventuell als Liste.
(Übergabe der Werte im Konstruktor).
Dazu eine Methode, der ein Text übergeben wird und die anhand der
gegebenen Format/Start-Parameter den gespeicherten Textabschnitt
in diesen Text einfügt und zurückgibt.
Für die Bildung von SQL-Kommandos gibt es in ADO.Net Commandbuilder.
Beitrag wurde zuletzt am 02.09.15 um 16:04:46 editiert. | |
Re: String.Format in erweiterter Form | | | Autor: akop303 | Datum: 02.09.15 16:17 |
| Die Angaben zu Gestaltung des Textes habe ich noch nicht. Diese werden mit Sicherheit aus der (noch nicht Existierender) Datenbank stammen. Mit einer Ausnahme. Die SQLs zur Anlage einer Tabelle, Trigger, Indexes, ... werden in den dafür vorgesehenen Klassen hart Codiert.
Ich verstehe aber nicht so ganz was du mit Schablonen meinst?
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
Re: String.Format in erweiterter Form | | | Autor: Manfred X | Datum: 02.09.15 16:53 |
| Mit Schablonen meine ich, daß es vorgefertigte
Textformulare gibt, in die an bestimmten Stellen
(Felder) variabel Textabschnitte eingetragen werden.
Deine Format-Patterns für den GesamtText und für einzelne Zeilen
deuten auf das Vorliegen einer entsprechenden Zielsetzung hin.
| |
Re: String.Format in erweiterter Form | | | Autor: akop303 | Datum: 03.09.15 09:09 |
| Aso, klar. Die wird es später geben.
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|