So löschen Sie die chars aus dem string, bis das erste Zeichen ist ein Buchstabe?

Ich habe ein Programm das mit Zeichenketten (Pascal). Nach der Lektüre ein string, wenn der erste char ist nicht ein Brief, dann brauche ich zum löschen aller ersten Zeichen, bis das erste ist ein Brief. Ich habe versucht zu schreiben, es mehrmals, aber immer es löscht alle string oder nichts.

Wenn das Programm liest, "123%^&abc" dann soll "abc"
In der ASCII-Tabelle Buchstaben sind aus 65..90 und 97..122

Dies ist, wie weit ich bin:

variables    a: set of 65..90;
             b: set of 97..122;
-------------------
  bool:=false;
  While (bool=false) do
  begin
    Writeln(s[1]);
    If (Ord(s[1]) in a) or (Ord(s[1]) in b) then
    begin
    bool:=true;
    end else
    delete(s,1,1);
  end;

Ich verstehe nicht, warum es nicht funktioniert?
Können Sie mir helfen mit diesem kleinen Eingriff? Danke.

Es ist schon eine Weile her, seit ich nicht getan habe, etwas Pascal, aber dein Programm scheint in Ordnung zu mir, können Sie fügen Sie die Ausgabe für einen gegebenen string ? Oder eventuell Fehler
Und, wie immer, füge ich die delphi-Tags, so dass deine Frage bekommen einige echte Aufmerksamkeit!
a und b sind nicht initialisierte Variablen. Nur weil Sie sind definiert als Sätze, die enthalten kann, die die Werte 65 bis 90 oder 97 bis 122, bedeutet nicht, dass alle diese bits sind tatsächlich eingestellt.
In der Tat, man muss schreiben const a = [65..90]; b = [97..122]. Ich gehe davon aus, dass der OP das getan, aber Sie könnten Recht haben. Vielleicht ist der OP schrieb var a: set of 65..90; b: set of 97..122, die erklärt a und b als Variablen, die durch spätere Zuordnung speichern kann beliebiger setzt der zahlen in den angegebenen Bereichen. Die Lektion, die OP könnte es sein, gehören der genaue code funktioniert nicht in der Frage, und nicht in pseudocode! (65..90 ist eine so genannte "Teilbereich-Typ"; daher set of 65..90 ist wie set of byte aber mehr wählerisch über die Elemente.)
Danke, @JensG ! Ich dachte darüber nach, dass für fast 3 Jahre. Jetzt macht es Sinn 🙂

InformationsquelleAutor va. | 2011-03-06

Schreibe einen Kommentar