String Identifizieren
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
String Identifizieren
Wie der Themen Name schon andeutet möchte ich den inhalt eines Strings Identifizieren....
also ich muss wissen ob sich zuffern im string befinden zum Beispiel:
String$ = "Ich bin 99 Jahre alt."
da sie zahlen an verschiedenen stellen auftauchen kann und immer unterschiedlich sein kann muss ich herausfinden wo im String die Zahl ist.
Die länge der zahl kann aber auch unterschiedlich sein in dem String.
Also 1 aber auch 60974478 die Größe der Zahl muss hier bei egal sein....
ich hoffe das man mir helfen kann....
ach ja wo wir einmal bei String sind... wie kann ich heraus finden ob sich ein bestimmtes Zeichen innerhalb von ' ' ist oder nicht?
Beispiel: Test, 'Test, 2'
da muss ich Test und Test,2 von ein andre trennen wobei das Trennzeichen das ,(Komma) ist aber Test, 2 ein kompletter String
also ich muss wissen ob sich zuffern im string befinden zum Beispiel:
String$ = "Ich bin 99 Jahre alt."
da sie zahlen an verschiedenen stellen auftauchen kann und immer unterschiedlich sein kann muss ich herausfinden wo im String die Zahl ist.
Die länge der zahl kann aber auch unterschiedlich sein in dem String.
Also 1 aber auch 60974478 die Größe der Zahl muss hier bei egal sein....
ich hoffe das man mir helfen kann....
ach ja wo wir einmal bei String sind... wie kann ich heraus finden ob sich ein bestimmtes Zeichen innerhalb von ' ' ist oder nicht?
Beispiel: Test, 'Test, 2'
da muss ich Test und Test,2 von ein andre trennen wobei das Trennzeichen das ,(Komma) ist aber Test, 2 ein kompletter String
Zuletzt geändert von Tsuki-Namida am 05.07.2009 20:00, insgesamt 2-mal geändert.

Code: Alles auswählen
If CreateRegularExpression(0, "[0-60974478]")
Dim Result$(0)
a = ExtractRegularExpression(0, " Ich bin 99 Jahre alt.", result$())
If a>0
Debug "Ziffer gefunden"
EndIf
Else
MessageRequester("Error", RegularExpressionError())
EndIf
Ich denke mal, And51 wird hier bald ein vernünftiges Beispiel posten...
Windows 11 - PB 6.03 x64
_________________________________
_________________________________
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
okay das gibt mir schon mal die anzahl der zifferns aus.... das ist doch schon mal was danke ich werde damit erst mal etwas umher spielen und probieren danke...
nur noch das heraus finden mit den platzhaltern....
also test,'test,2' Das Rote brauch ich getrennt und das komma ist ein trennzeichen und das ' ist sowar wie bei Strings also String$ = "Test, 2"
[/code]
nur noch das heraus finden mit den platzhaltern....
also test,'test,2' Das Rote brauch ich getrennt und das komma ist ein trennzeichen und das ' ist sowar wie bei Strings also String$ = "Test, 2"
[/code]

- Kai
- Beiträge: 264
- Registriert: 29.09.2005 20:58
- Computerausstattung: iMac 2019
- Wohnort: Hannover
- Kontaktdaten:
Meinst du sowas?
Code: Alles auswählen
Procedure FindValue(String$)
Protected *C.Character = @String$
Protected sResult.s, iFound.i
For c = 0 To Len(String$)
If *C\c > 47 And *C\c < 58
sResult + Chr(*C\c)
iFound = 1
Else
If iFound = 1 : Break : EndIf
EndIf
*C + SizeOf(Character)
Next
ProcedureReturn Val(sResult)
EndProcedure
Debug FindValue("Das ist ein test! 123321,45")
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
supi danke kai 
jetzt fehlt mir nur noch das mit dem komme also das ich das komma was innerhalb von ' steht bekommeund das ausherhalb nur als trennzeichen dint....
Beispiel:

jetzt fehlt mir nur noch das mit dem komme also das ich das komma was innerhalb von ' steht bekommeund das ausherhalb nur als trennzeichen dint....
Beispiel:
Code: Alles auswählen
For k=1 To 3
Debug StringField("Test,'Test, 2','Test, 3'", k, ",")
Next
;Ergebnis muss sein:
;Test
;'Test, 2'
;'Test, 3'

- Kai
- Beiträge: 264
- Registriert: 29.09.2005 20:58
- Computerausstattung: iMac 2019
- Wohnort: Hannover
- Kontaktdaten:
Bleibt die Formatierung immer gleich?
Dann könnte man es so machen, geht aber bestimmt auch leichter.
Dann könnte man es so machen, geht aber bestimmt auch leichter.

Code: Alles auswählen
String$ = "Test,'Test, 2','Test, 3'"
Debug StringField(String$, 1, ",")
String$ = ReplaceString(String$, "','", "|")
Debug StringField(Mid(String$, FindString(String$, "'", 1)), 1, "|") + "'"
Debug "'" + StringField(Mid(String$, FindString(String$, "'", 1)), 2, "|")
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ich hätte hier noch ne kleine Lösung für den wert...
Code: Alles auswählen
Procedure.l FindValue( Such$ )
Protected Pos.l = 0
Protected Asci.l
Protected Valu.l
Repeat
Pos+1
Asci = Asc( Mid( Such$, Pos ) )
Valu = Val( Mid( Such$, Pos ) )
Until ( Asci > 47 And Asci < 58 ) Or Pos > Len( Such$ )
ProcedureReturn Valu
EndProcedure
; Zufallsstring erzeugen
Leng1 = Random(10)+5
Leng2 = Random(10)+5
For n=1 To Leng1
a$ + Chr(Random(63)+64)
Next
a$ + Str(Random($7fffffff))
For n=1 To Leng2
a$ + Chr(Random(63)+64)
Next
Debug a$
Debug FindValue( a$ )
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
@Kai
nein die formatierung bleit leider nicht gleich
das kann also so aus sehn:
"Test,'Test, 2','Test, 3'"
"'Test, 4','Test, 2','Test, 3'"
"Test,513,'Test, 3'"
"666,'Test, 2, 3, 4',huhu,'irgent ein, text, mit, Kommas'"
wie man sieht kann es verschiedene Formatierung haben -.- und auch verschieden viele trennzeichen wo dazwischen ein text stehn kann also ähnlich wie ein PB befehl da wird ja das komma was zwischen " " steht auch nicht als trennzeichen verwendet für die parameter....
@Kaeru Gaman
Supi danke
nein die formatierung bleit leider nicht gleich
das kann also so aus sehn:
"Test,'Test, 2','Test, 3'"
"'Test, 4','Test, 2','Test, 3'"
"Test,513,'Test, 3'"
"666,'Test, 2, 3, 4',huhu,'irgent ein, text, mit, Kommas'"
wie man sieht kann es verschiedene Formatierung haben -.- und auch verschieden viele trennzeichen wo dazwischen ein text stehn kann also ähnlich wie ein PB befehl da wird ja das komma was zwischen " " steht auch nicht als trennzeichen verwendet für die parameter....
@Kaeru Gaman
Supi danke

Code: Alles auswählen
string$="666,'Test, 2, 3, 4',huhu,'irgend ein, text, mit, Kommas'"
; string$="'Test, 4','Test, 2','Test, 3'"
; string$="Test,513,'Test, 3'"
For i=1 To CountString(string$, ",")+1
a$=StringField(string$, i, ",")
If Left(a$,1)="'"
Repeat
i+1
a$+","+StringField(string$, i, ",")
Until Right(a$,1)="'"
EndIf
Debug a$
Next
Windows 11 - PB 6.03 x64
_________________________________
_________________________________
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten: