| |
VB.NET - Ein- und UmsteigerFind & Replace in String | | | Autor: stefanbla80 | Datum: 01.06.17 20:17 |
| Hallo zusammen,
Ich habe einen String, z. B. TestString = "WO2017-05-01;CM2017-03-01;TT2017-01-01".
Nun würde ich gerne z. B. das hinter "CM" stehende Datum ersetzen - z. B. auf das heutige Datum.
Habt Ihr hier Ansätze, z. B. mit Offsets usw.
Stehe irgendwie auf dem Schlauch
Grüße
Stefan | |
Re: Find & Replace in String | | | Autor: effeff | Datum: 01.06.17 22:03 |
| Wenn das Datum immer an letzter Stelle steht, brauchst Du doch nur den entsprechenden Substring ersetzen...
Oder Du splittest den String mit dem Semikolon als Trennzeichen, ersetzt aus dem resultierenden Array den Teil mit dem Index 1 durch das entsprechend formatierte heutige Datum und fügst dann alles wieder zusammen.
Methode 1:
Dim TestString As String = "WO2017-05-01;CM2017-03-01;TT2017-01-01"
Dim aktDate = Format(Now.Date, "yyyy-MM-dd")
Dim ErgebnisString As String = TestString.Substring(0, 15) & aktDate & _
TestString.Substring(25, 13)
'oder besser: Dim ErgebnisString As String = String.Concat(TestString.Substring(
' 0, 15), aktDate, TestString.Substring(25, 13))
MessageBox.Show(ErgebnisString) Methode 2:
Dim TestString As String = "WO2017-05-01;CM2017-03-01;TT2017-01-01"
Dim arr() As String = TestString.Split(";")
Dim aktDate = Format(Now.Date, "yyyy-MM-dd")
Dim Ergebnisstring As String = arr(0) & ";CM" & aktDate & ";" & arr(2)
'oder besser: Dim Ergebnisstring As String = String.Concat(arr(0), ";CM",
' aktDate, ";", arr(2))
MessageBox.Show(Ergebnisstring) Daneben könntest Du noch mit Regulären Ausdrücken arbeiten...
EALA FREYA FRESENA | |
Re: Find & Replace in String | | | Autor: stefanbla80 | Datum: 21.07.17 13:51 |
| Hallo effeff,
und vielen Dank für Deine Antwort - ist schon wirklich längere Zeit her, komme einfach nicht dazu ...
Vielleicht vorne weg eine generelle Frage:
Ich habe eine ComboBox. In dieser stehen verschiedenen "Statusmeldungen".
z. B.: - in Arbeit
- Angebot versendet
- Rückfragen
- ...
Ich würde gerne diese Meldungen "mittracken". Also heiß: Ich wähle in der Box "in Arbeit" aus, und schreibe mir somit das Datum "weg". Also eine Art "Historie".
Jetzt kann es natürlich sein, dass ich immer wieder mal einige Statusmeldungen während der Projektzeit mehrfach brauche.
Meine Frage: Wie könnte ich das am Besten "wegschreiben" um nachher auch wieder eine Art Auswertung fahren zu können. Dachte jetzt anfangs an einen "String" wie oben beschrieben. Jedoch überschreibe ich ja dann diese Einträge wieder.
Grüße
Stefan | |
Re: Find & Replace in String | | | Autor: effeff | Datum: 21.07.17 15:18 |
| Du willst also jedesmal, wenn in der ComboBox eine neue Auswahl getroffen wird, die Auswahl zusammen mit dem aktuellen Datum und ggf. der aktuellen Zeit, loggen und nachher dann auch noch schnell und bequem auswerten?
Dazu würde ich eine Datenbank nehmen, z. B. https://msdn.microsoft.com/de-de/library/ms172599%28v=vs.90%29.aspx oder einfach eine Access MDB.
Alternativ steht Dir natürlich auch eine Textdatei zur Verfügung, an die Du jedesmal einfach nur eine Zeile anhängst. Dann würde ich aber lieber für jeden Tag eine eigene Datei erstellen lassen, sonst wird die Datei zu groß, zu behäbig und die Auswertung dauert länger.
Du kannst auch in eine Data- oder Hashtable schreiben und beim Beenden des Programmes die Daten in eine Excel-Datei übertragen (auch da würde ich für jeden Tag eine eigene Datei erstellen lassen).
EALA FREYA FRESENA | |
Klasse für die Serialisierung von Meldungen | | | Autor: Manfred X | Datum: 21.07.17 21:54 |
| Eine Klasse für die Serialisierung von Meldungen:
<Serializable()> _
Public Class Spion
Implements IDisposable
<Serializable()> _
Public Class SpionItem
Public ReadOnly ComboItem As String
Public ReadOnly DatumZeit As DateTime
'weitere Info-Properties z.B. Benutzer
Public Sub New(ComboText As String, dt As DateTime)
ComboItem = ComboText
DatumZeit = dt
End Sub
End Class
Private SpionDatei As String
Private ReadOnly SpionItemList As New List(Of SpionItem)
<NonSerialized()> _
Dim fmt As New System.Runtime.Serialization.Formatters. _
Binary.BinaryFormatter()
Public Sub New(SpionDateiPfad As String)
If IO.File.Exists(SpionDateiPfad) Then
Using fs As New IO.FileStream(SpionDateiPfad, _
IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
Dim cs As Spion = DirectCast(fmt.Deserialize(fs), Spion)
Me.SpionItemList = cs.SpionItemList
End Using
End If
SpionDatei = SpionDateiPfad
End Sub
Public Sub addItem(Combotext As String, dt As DateTime)
SpionItemList.Add(New SpionItem(Combotext, dt))
End Sub
Public ReadOnly Property GetList As DataTable
Get
Dim dt As New DataTable
dt.Columns.Add("ComboItem") : dt.Columns.Add("DatumZeit")
With SpionItemList
For i As Integer = 0 To .Count - 1
dt.Rows.Add(.Item(i).ComboItem, .Item(i).DatumZeit)
Next i
End With
Return dt
End Get
End Property
Public Sub Serialize()
IO.File.Delete(SpionDatei)
Try
Using fs As New IO.FileStream(SpionDatei, _
IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.None)
fmt.Serialize(fs, Me)
End Using
Catch ex As Exception
Stop
End Try
End Sub
Private disposedValue As Boolean
Protected Overridable Sub Dispose(disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
Serialize()
End If
End If
Me.disposedValue = True
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
End Class Einbau der Klasse in eine Combobox-Ableitung:
Public Class ComboBoxSpion
Inherits ComboBox
Dim sp As New Spion("C:\Daten\ComboboxSpionage.ser")
Protected Overrides Sub OnSelectedIndexChanged(e As System.EventArgs)
MyBase.OnSelectedIndexChanged(e)
sp.addItem(DirectCast(Me.Items(Me.SelectedIndex), String), Now)
End Sub
Public ReadOnly Property GetSpionItems() As DataTable
Get
Return sp.GetList
End Get
End Property
Private Sub ComboBoxSpion_Disposed(sender As Object, _
e As System.EventArgs) Handles Me.Disposed
sp.Serialize()
End Sub
End Class Formular: Anwendungsbeispiel
Public Class frmComboBoxSpion
Dim cbo As New ComboBoxSpion With _
{.Parent = Me, .Width = 200, .Height = 50}
Dim dt As DataTable
Dim bs As New BindingSource
Dim dgv As New DataGridView With _
{.Parent = Me, .Width = 200, .Height = 200, _
.Top = 110, .DataSource = bs}
Dim WithEvents btn As New Button With _
{.Parent = Me, .Width = 200, .Top = 80, _
.Text = "Items zeigen"}
Private Sub frmComboBoxSpion_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
cbo.Items.AddRange({"Projekt Müller", "Angebot Meier", _
"Rechnung Schröder", "Projekt Buchs"})
End Sub
Private Sub btn_Click(sender As Object, _
e As System.EventArgs) Handles btn.Click
bs.DataSource = cbo.GetSpionItems
End Sub
End Class | |
| 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 |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|