MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 15.05.2019, 20:27   #1
Hansol
MOF User
MOF User
Standard Acc2010 - VBA String durchsuchen und alle Position des Suchparameters anzeigen

Hallo zusammen,

ich versuche einen String zu durchsuchen und die Positionen des Suchparameters anzuzeigen.

Also,

String = "aaaa1aa1aaa1aaa1"
Suchparameter = "1"

Jetzt sollte die Ausgabe sein: 5,8,12,16 - Alle Positionen der 1

Ist das machbar?

Wie lange darf überhaupt ein String sein?

Mit freundlichen Grüßen
Hansol ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.05.2019, 20:46   #2
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Wie lange darf überhaupt ein String sein?

Verwaltbar bis etwa 2 GB. Vermutlich werden andere Grenzen eher wirken.

Mögliche Methoden für Positionsbestimmung:
- Instr in Schleife mit jeweilgem Weitersetzen der Suchstartposition
- FirstIndex einer RegEx-Matchcollection
Sicherlich mit einigem Aufwand über Win-API's

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende

Geändert von ebs17 (15.05.2019 um 21:46 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.05.2019, 21:29   #3
hcscherzer
MOF Guru
MOF Guru
Standard

Eventuell gäbe es auch noch die Möglichkeit, den Inhalt der Zeichenkette einem Byte-Array zuzuweisen und dann in einer Schleife durch die Elemente dieses Arrays zu iterieren.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 18:14   #4
Kyron9000
MOF Meister
MOF Meister
Standard

Hallo,

ich würde es mal so versuchen, wenn's zu lange dauert...
Code:

Option Compare Database
Option Explicit

Public Function setChar(SarchIn As String, SarchFor As String) As Variant
Dim i        As Integer
Dim Position As String
Dim SarchNow As String
    If InStr(SarchIn, SarchFor) <> 0 Then
    For i = 1 To Len(SarchIn)
        SarchNow = Mid(SarchIn, i, 1)
            If SarchNow = SarchFor Then
                Position = Position & i & ","
            End If
    Next i
        setChar = Nz(Left(Position, Len(Position) - 1), "")
    Else
        setChar = ""
    End If
End Function
Kannst in einer Abfrage verwenden...
Code:

X: Nz(setChar(Nz("aaaa1aa1aaa1aaa1";"1");"")
PS: das Teil solltest in ein Modul verfrachten...
wie du das benennst, ist deine Sache

__________________

Gruß Alfred

Geändert von Kyron9000 (16.05.2019 um 18:52 Uhr).
Kyron9000 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 21:19   #5
knobbi38
MOF User
MOF User
Standard

Hallo Hansol,

hier ein Snippet mit der Instr-Funktion und dem weitersetzen des Startparameters, wie Eberhard das schon vorgeschlagen hat:
Code:

Public Function FindAllChar( _
    ByVal TargetString As String, _
    ByVal SearchString As String, _
    Optional ByVal Delimiter = ",") As String
  Dim startIndex As Long

  startIndex = 0
    
  Do
    startIndex = InStr(startIndex + 1, TargetString, SearchString)
    
    If startIndex = 0 Then Exit Do
    
    FindAllChar = FindAllChar & Delimiter & CStr(startIndex)
  Loop
  
  FindAllChar = Mid$(FindAllChar, Len(Delimiter) + 1)
End Function

Gruß Ulrich

Geändert von knobbi38 (16.05.2019 um 21:22 Uhr).
knobbi38 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.