Festellen, ob ein String nur Zahlen enthält

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Festellen, ob ein String nur Zahlen enthält

Beitrag von MVXA »

Hallo !
Ich hab für ein Programm von mir eine Funktion geschrieben, mit der man überprüfen kann, ob ein String nur Zahlen enthält (#True) oder nicht (#False)

Code: Alles auswählen

Procedure isNumeric(strZahl.s)
    DefType.b bytResult
    DefType.l lngCount
    DefType.s strTmpChar
    
    For lngCount = 1 To Len(strZahl)
        strTmpChar = Mid(strZahl, lngCount, 1)
        If Asc(strTmpChar) => '0' And Asc(strTmpChar) <= '9'
            bytResult = #True
        Else
            bytResult = #False
            Break
        EndIf
    Next
    
    ProcedureReturn bytResult
EndProcedure
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Ah. wieder mal ein optimierungswettbewerb:

Code: Alles auswählen

Procedure IsNumeric(*String.BYTE)
  Result=#True
  While *String\b
    If *String\b<'0' Or *String\b>'9'
      Result=#False
      Break
    EndIf
    *String+1
  Wend
  ProcedureReturn Result
EndProcedure

Debug IsNumeric(@"1233587923")
Debug IsNumeric(@"234243jk")
a$="654"
Debug IsNumeric(@a$)
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

ich habs nur gepostet weil ich diese Funktion nirgends gefunden hab, das soll kein optimierungswettbewerb sein :freak:
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

@GPI
Optimieren?
Unter Andere Sprachen ist ein Source von Powerbasic aus dem
englischen Forum, bei dem ich leider passen muß.
Wie wäre es denn damit? Das wäre doch eine Herausforderung zum
Optimierungswettbewerb, oder? :mrgreen:

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Ich hät da nix gegen ... da ich auf Optimierte Codes lauere wie der Wolf auf das Häschen *gg* ... kann ich nur von profetieren, vorallem benutzt ich auch so eine Procedure ... und lernen tut man (Anfänger :wink: ) bei so was auch noch :D

also in dem Sinne *gg* :mrgreen:

MFG PMV <)
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

LittleFurz hat geschrieben:ich habs nur gepostet weil ich diese Funktion nirgends gefunden hab, das soll kein optimierungswettbewerb sein :freak:
War nicht böse gemeint. Aber bei solch kleinen Routinen hat jeder seine vorgehensweise. Ich würde sowas über Pointer lösen (siehe oben).
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

dann lsöcht das ganze hier halt, ich wollt das nur für anfänger bereitstellen... mir doch egal -_-
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

LittleFurz hat geschrieben:dann lsöcht das ganze hier halt, ich wollt das nur für anfänger bereitstellen... mir doch egal -_-
Toll. ich fühl mich jetzt auch mieß :(

Es führt mehr als nur ein Weg zum Ziel. Wichtig ist erstmal einen weg zu finden.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
redacid
Beiträge: 581
Registriert: 29.08.2004 17:06

Beitrag von redacid »

LittleFurz: nein, der Thread wird nicht gelöscht. Ich habe deine Procedur nicht getestet, gehe aber einfach davon aus, dass sie funktioniert. Und nur, weil GPI eine "andere" Version zeigt, ist deine doch noch lange nicht schlechter - nur eben anders gelöst. Es ist doch schön, wenn man für ein und dasselbe Problem gleich mehrere verschiedene Lösungen hat.
Benutzeravatar
Vallan
Beiträge: 223
Registriert: 20.01.2006 19:34
Kontaktdaten:

Beitrag von Vallan »

Um herauszufinden ob keine Buchstaben da sind (Kürtzer aber schlechter) :

Code: Alles auswählen

string.s = "34"
If UCase(string) = LCase(string)
Debug "Ja"
Else 
Debug "Nein"
EndIf 
Antworten