Entfernen von whitespace-Zeichen in string
Ich habe den folgenden code:
program main
character (len=15) :: abc = "te st tex t"
print *, trim(abc)
end program main
Welche Ausgänge:
te st tex t
Ich vorbehalten alle Leerzeichen entfernt werden, aber das war es nicht. Wie kann ich entfernen Sie alle Leerzeichen aus dem string?
Wahrscheinlich müssen Sie so etwas wie dieses: schonfelder.co.uk/Iso_vst.f95 (Beschreibung, schonfelder.co.uk/is1539-2-99.htm)
InformationsquelleAutor fronthem | 2014-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Trim entfernen, entfernen Sie Leerzeichen nur an den Rändern, nicht in der Mitte (dies ist üblich, das Verhalten auf fast alle Sprachen/Bibliotheken). Wenn Sie möchten, entfernen Sie alle Leerzeichen in der Zeichenfolge, müssen Sie Ihre eigene Funktion erstellen, um dies zu tun, Durchlaufen die string.
Ex.:
Getestet wurde dies auf intel-compiler, nicht auf gfortran, aber ich denke, es wird funktionieren.
trim
entfernt nur Leerzeichen, keine führenden Leerzeichen.Wieder, diese Antwort geht nicht auf die wie entfernen Sie alle whitespace-Zeichen (zumindest nicht im detail).
Dieses Beispiel ist ausführlich genug, um Sie, ja72? 🙂
InformationsquelleAutor Jauch
Hier ist eine dreckige, schändliche Art zu beseitigen, die Räume. Dies wird wahrscheinlich nur funktionieren, wenn ein compiler legt die Länge-15 Strings in der gleichen Reihenfolge und Raum, als wäre es ein 15-element-array von Zeichen. Dies ist zwar wahrscheinlich, um wahr zu sein, und in meiner letzten Erfahrung ist wahr, es ist nicht garantiert, so der standard. Abgesehen davon, kann dieser Ansatz gut genug.
Verwenden Sie diese Methode auf eigene Gefahr.
WHERE
- Anweisung mit einer Reihe vonCHARACTER
auch heraus zu filtern, Räume?WHERE(abc_array/=' ') abc_array2=abc_array END WHERE
und dannabc = TRANSFER(abc_array2,...)
. Vielleicht?!?Für mich
WHERE
ist ein filter.PACK
ist nur, wie die Neugestaltung ArtWährend faulem mit TRANSFER macht auch mir das Gefühl, schmutzig und beschämend, der standard hat einige Unterstützung für diese in das layout ein Zeichen Skalare so ziemlich die gleichen sein wie das layout eines Arrays für die Standard-Zeichen für die Sequenz association Regeln des Arguments Verein zu arbeiten (mittels dieser Regeln wird eine alternative zum transfer, aber Sie müssen eine intermediate-Prozedur-Aufruf). Sie können nicht verwenden WO - bleibt also nur noch die Elemente, die entsprechen Bereiche undefiniert.
InformationsquelleAutor High Performance Mark
War ich in der Lage, dies zu tun mit der variable string-Bibliothek hier beschrieben ( http://schonfelder.co.uk/is1539-2-99.htm ). Der source-code-link findet sich in der Einleitung der ISO-Dokument.
Hier ist der code
Programm Console1
verwenden ISO_VARYING_STRING
implizite keine
InformationsquelleAutor ja72
Für diejenigen, die abgeneigt
TRANSFER
vielleicht eine nette kleine rekursive Funktion ansprechen würde. Wie geschrieben hängt das von Fortran 2003 ist die Fähigkeit automatisch zuzuordnen Charakter Skalare, aber es sollte nicht allzu schwer zu ändern, wenn Ihr compiler nicht unterstützt diese Funktion noch nicht.InformationsquelleAutor High Performance Mark
Können Sie versuchen, diese:
InformationsquelleAutor Cesar Augusto Perez