Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
Oberxil
Coder
Coder

Anmeldedatum: 14.06.2008
Beiträge: 87

Zahlen extrahiern
Verfasst am: 04.09.2008, 21:36

Ich hab nen Text zb: abc1234.5def
Jetzt will ich dass 1234.5 ausgegeben wird
Das Problem ist, dass 1234.5 nicht immer gleich lang ist genauso wenig wie abc und def
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 04.09.2008, 21:42

For Schleife und Replace. Am besten noch mit InStrB vorher prüfen ob der Wert enthalten ist, denn das ist schneller als jedesmal Replace auszuführen.

Oder den String per Schleife durchgehen und von jedem Zeichen den Ascii Wert überprüfen und dementsprechend handeln.
 
nicok
Poster
Poster

Anmeldedatum: 15.05.2008
Beiträge: 161


Verfasst am: 04.09.2008, 21:42

InstrLike gibt dir die Stelle zurück:

http://vb-tec.de/instrlik.htm
gibt bestimmt aber noch eine bessere Methode
 
Oberxil
Coder
Coder

Anmeldedatum: 14.06.2008
Beiträge: 87


Verfasst am: 04.09.2008, 21:48

Hätte vl noch erwähnen sollen dass abc, def und 1234.5 nicht immer gleich sind(1234.5 ist halt immer irgendeine Zahlenfolge^^). das einize was immer vorhanden ist, ist der "."
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 04.09.2008, 22:10

Ich seh keinen Widerspruch zu meinem obrigen Post.
War ja nicht die Rede davon dass du nach "abc" oder "def" suchen sollst.
 
Oberxil
Coder
Coder

Anmeldedatum: 14.06.2008
Beiträge: 87


Verfasst am: 04.09.2008, 22:21

Aber wie soll ich was mit InStr , Replace und irgendwas prüfen wenn ich nicht weis nach was?
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 04.09.2008, 22:23

Mein Grundgedanke wäre da halt alles zu entfernen was nicht numeric ist.
Den Punkt muß man halt noch beachten.
 
Oberxil
Coder
Coder

Anmeldedatum: 14.06.2008
Beiträge: 87


Verfasst am: 04.09.2008, 23:16

Ich hab grad irgendwie kp wie ich das machen soll^^
 
Analegrande
Tutorial Leser
Tutorial Leser

Anmeldedatum: 01.05.2008
Beiträge: 69


Verfasst am: 05.09.2008, 05:45

ZiG vorschlag war glaube ich mit der Replace funktion alle buchstaben aus dem Text mit "nichts" zu ersetzen ( "" ).

Hier was zur Replace-Funktion: http://www.vbarchiv.net/commands/Replace.php

Das machst du halt mit allen Buchstaben und hast dann nur noch die Zahlen.

Gruss Anale
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 05.09.2008, 10:20

Etwas selber nachdenke hat noch niemandem geschadet:

Visual Basic: [code]for i = 0 to len(string) -1
if substr(string, i, 1) isnumeric = false or substr(string, i, 1) <> "." then
string = substring(string, 1)
end if
next[/code]

So ungefär müsste das gehen.
 
Oberxil
Coder
Coder

Anmeldedatum: 14.06.2008
Beiträge: 87


Verfasst am: 05.09.2008, 13:30

Deiner ging leider nicht, also hab ich ihn ein bischen umgeändert

Visual Basic: [code]For i = 0 To Len(Text1.Text) - 1
If IsNumeric(Mid(Text1.Text, i, 1)) = False Or Mid(Text1.Text, i, 1) <> "." Then
Text1.Text = Mid(Text1.Text, 1)
End If
Next i
[/code]

Geht aber immer noch nicht^^
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 05.09.2008, 14:35

Bei mir war text na Variable

Visual Basic: [code]
Dim sText as String
Dim sZahlen as String 'Ja, String ^^
sText = Text1.Text
For i = 0 To Len(sText) - 1
If IsNumeric(Mid(sText, i, 1)) = True Or Mid(sText, i, 1) = "." Then ' Sry das war mein Fehler
sZahlen &= Mid(sText.Text, i, 1)
End If
Next i[/code]
 
Oberxil
Coder
Coder

Anmeldedatum: 14.06.2008
Beiträge: 87


Verfasst am: 05.09.2008, 15:51

Visual Basic: [code]If IsNumeric(Mid(sText, i, 1)) = True Or Mid(sText, i, 1) = "." Then ' Sry das war mein Fehler[/code]

da kommt immer "ungültiger Prozeduraufruf oder ungültiges Argument"
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 05.09.2008, 16:57

Visual Basic: [code]
Dim sText As String
Dim sZahlen As String
Dim sChar As String

sText = "abc1234.56def"

For i = 1 To Len(sText)
sChar = Mid$(sText, i, 1)
If IsNumeric(sChar) Or Asc(sChar) = 46 Then
sZahlen = sZahlen & sChar
End If
Next i

MsgBox sZahlen
[/code]

Mit einer Select Case Überprüfung des Ascii Wertes ginge es evt. noch schneller, wird bei deinem Fall aber denke ich sowieso nicht nötig sein.
 
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267


Verfasst am: 05.09.2008, 17:09

hier als c&p-vb6-funktion:

Visual Basic: [code]Private Function ZahlenAuslesen(DerText As String, Optional Punkt As Boolean = True) As String
Dim i As Integer

For i = 1 To Len(DerText)

If IsNumeric(Mid(DerText, i, 1)) = True Then
ZahlenAuslesen = ZahlenAuslesen & Mid(DerText, i, 1)
End If
If Punkt = True Then
If Mid(DerText, i, 1) = "." Then
ZahlenAuslesen = ZahlenAuslesen & "."
End If
End If
Next i

End Function[/code]

/oh, hab die zweite seite garnicht gesehen Very Happy
 
elek´tronik
Tutorial Leser
Tutorial Leser

Anmeldedatum: 25.07.2008
Beiträge: 56


Verfasst am: 05.09.2008, 17:47

Sollte das ganze nicht auch mit Val(Text) gehen??
 
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267


Verfasst am: 05.09.2008, 18:46

Very Happy denk schon...

allerdings nicht, wenn zB.: "12.34adsad12.78" angegeben ist^^ naja egal
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 05.09.2008, 22:02


Val gibt nur Zahlen zurück die am Anfang stehen.
Wenn die Zahl so wie in diesem Fall in der Mitte steht, wird 0 zurück gegeben.
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: zahlen

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge lotto zahlen generator 746 03.12.2007, 10:18
Keine neuen Beiträge zahlen 1 zu 0001 umwandeln 330 24.11.2007, 15:04
Keine neuen Beiträge Addieren von Zahlen 630 22.08.2007, 20:36
Keine neuen Beiträge Zufällige Zahlen 738 29.06.2007, 15:08
Keine neuen Beiträge Aus text zahlen.. 642 30.05.2007, 15:09
 


[ Time: 0.0749s ][ Queries: 131 (0.0285s) ][ GZIP on - Debug on ]