Gibt einen String zurück, der durch die üblichen printf-Konventionen der C-Bibliotheksfunktion sprintf formatiert ist. Siehe unten für weitere Details und siehe Sprintf (3) oder printf (3) auf Ihrem System für eine Erläuterung der allgemeinen Grundsätze. Perl macht seine eigene Sprintf-Formatierung: Es emuliert die C-Funktion sprintf (3). Aber nutzt es nicht, außer für Gleitkommazahlen, und selbst dann sind nur Standard-Modifikatoren erlaubt. Nicht-Standard-Erweiterungen in Ihrem lokalen Sprintf (3) sind daher von Perl nicht verfügbar. Im Gegensatz zu printf. Sprintf tut nicht was du wahrscheinlich meinst, wenn du es als Array als dein erstes Argument passierst. Das Array wird skalarer Kontext gegeben, und anstatt das 0. Element des Arrays als das Format zu verwenden, verwendet Perl die Anzahl der Elemente im Array als das Format, das fast niemals sinnvoll ist. Perls sprintf erlaubt die folgenden allgemein bekannten Konvertierungen: Darüber hinaus erlaubt Perl die folgenden weit verbreiteten Conversions: Schließlich erlaubt Perl für rückwärts (und wir bedeutet rückwärts) Kompatibilität, Perl erlaubt diese unnötigen, aber weit verbreiteten Conversions: Beachten Sie, dass die Anzahl der Exponenten-Ziffern in der wissenschaftlichen Notation von e. E. g und G für Zahlen mit dem Modul des Exponenten weniger als 100 ist systemabhängig: Es kann drei oder weniger sein (null-gepolstert als notwendig). Mit anderen Worten, 1,23 mal zehn bis 99. kann entweder 1.23e99 oder 1.23e099 sein. Ähnlich für a und A. der Exponent oder die hexadezimalen Ziffern können schwimmen: vor allem die lange doppelte Perl Konfiguration Option kann Überraschungen verursachen. Zwischen dem und dem Formatbuchstaben können Sie mehrere zusätzliche Attribute angeben, die die Interpretation des Formats steuern. In dieser Reihenfolge handelt es sich um einen expliziten Formatparameter-Index, wie z. B. 2. In der Vorlage sprintf wird das nächste unbenutzte Argument in der Liste formatiert, aber damit können Sie die Argumente nicht in Ordnung bringen: Wenn ein Leerzeichen und ein Pluszeichen angegeben sind Wie die Fahnen auf einmal, wird der Raum ignoriert. Wenn die Fahne und eine Präzision in der o-Umwandlung gegeben sind, wird die Präzision inkrementiert, wenn sie für die führenden 0 notwendig ist. Diese Markierung teilt Perl mit, die gelieferte Zeichenkette als Vektor von ganzen Zahlen zu interpretieren, eine für jedes Zeichen in der Zeichenfolge. Perl wendet das Format auf jede ganze Zahl an und verbindet dann die resultierenden Strings mit einem Trennzeichen (standardmäßig ein Punkt). Dies kann nützlich sein, um Ordinalwerte von Zeichen in beliebigen Zeichenfolgen anzuzeigen: Setzen Sie einen Sternchen vor dem v, um die Zeichenfolge zu überschreiben, die verwendet werden soll, um die Zahlen zu trennen: Sie können auch explizit die Argumentnummer angeben, die für die Verknüpfungszeichenfolge verwendet wird, die etwas wie 2v für verwendet Beispiel: Argumente sind normalerweise so formatiert, dass sie nur so breit sind wie erforderlich, um den angegebenen Wert anzuzeigen. Sie können die Breite überschreiben, indem Sie hier eine Zahl setzen oder die Breite aus dem nächsten Argument (mit) oder aus einem angegebenen Argument erhalten (zB mit 2): Wenn eine durchlaufende Feldbreite negativ ist, hat sie die gleiche Wirkung wie die - Flagge: linksbündigung Sie können eine Präzision (für numerische Konvertierungen) oder eine maximale Breite (für String-Conversions) angeben, indem Sie eine. Gefolgt von einer Nummer. Für Gleitkomma-Formate außer g und G. Hier legen Sie fest, wie viele Stellen direkt vom Dezimalpunkt zu zeigen (die Voreinstellung ist 6). Zum Beispiel: Für g und G gibt dies die maximal zulässige Anzahl von Ziffern an, einschließlich derjenigen, die vor dem Dezimalpunkt liegen, und die nach ihm zum Beispiel: Für ganzzahlige Konvertierungen bedeutet die Angabe einer Präzision, dass die Ausgabe der Nummer selbst Null sein sollte Auf diese Breite gelegt, wo das 0-Flag ignoriert wird: Bei String-Conversions schneidet die Präzision die Zeichenfolge an die angegebene Breite an: Sie können auch die Präzision aus dem nächsten Argument mit .. oder aus einem angegebenen Argument (zB mit .2): Wenn eine durchgeführte Präzision negativ ist, zählt sie überhaupt keine Präzision. Bei numerischen Konvertierungen können Sie die Größe angeben, um die Zahl mit l zu interpretieren. H. V. q L. oder ll. Für Integer-Conversions (Duox X bi DUO) werden in der Regel immer die angenommen, was die Standard-Integer-Größe auf deiner Plattform ist (in der Regel 32 oder 64 Bits), aber du kannst dies überschreiben, um stattdessen einen der Standard-C-Typen zu verwenden, wie unterstützt Durch den Compiler verwendet, um Perl zu bauen: Ab 5.14, keiner von ihnen wirft eine Ausnahme, wenn sie nicht auf Ihrer Plattform unterstützt werden. Wenn jedoch Warnungen aktiviert sind, wird eine Warnung der printf Warnungsklasse auf einem nicht unterstützten Konvertierungsflag ausgegeben. Sollten Sie stattdessen eine Ausnahme bevorzugen, dann tun Sie dies: Wenn Sie über eine Versionsabhängigkeit wissen möchten, bevor Sie das Programm starten, legen Sie so etwas an die Spitze: Sie können herausfinden, ob Ihr Perl Quads über Config unterstützt: Für Floating - Punkt-Conversions (efg EFG), Zahlen werden in der Regel als die Standard-Gleitkomma-Größe auf Ihrer Plattform (Doppel-oder Lang-Doppel), aber Sie können zwingen, lange Doppel mit q. L. oder ll, wenn deine Plattform sie unterstützt. Sie können herausfinden, ob Ihr Perl lange Dritte über Config unterstützt: Sie können herausfinden, ob Perl langes Doppel gilt, um die Standard-Gleitkommagröße zu sein, die auf Ihrer Plattform über Config verwendet werden soll: Es kann auch sein, dass lange doppelte und doppelte gleich sind Ding: Der Größen-Spezifizierer V hat keine Wirkung für Perl-Code, wird aber für die Kompatibilität mit XS-Code unterstützt. Es bedeutet, die Standardgröße für eine Perl-Ganzzahl oder Gleitkommazahl zu verwenden, die die Voreinstellung ist. Normalerweise nimmt sprintf das nächste unbenutzte Argument als den Wert für jede Format-Spezifikation zu formatieren. Wenn die Formatspezifikation verwendet wird, um zusätzliche Argumente zu erfordern, werden diese aus der Argumentliste in der Reihenfolge verbraucht, in der sie in der Formatspezifikation vor dem Formatformat erscheinen. Wenn ein Argument durch einen expliziten Index angegeben wird, hat dies keinen Einfluss auf die normale Reihenfolge für die Argumente, auch wenn der explizit angegebene Index das nächste Argument gewesen wäre. Verwendet eine für die Breite, b für die Präzision und c als den Wert zu formatieren, während: würde eine für die Breite und Präzision und b als den Wert zu formatieren. Hier sind einige Beispiele, die bei der Verwendung eines expliziten Indexes eventuell entkommen müssen: Wenn das Gebietsschema (einschließlich des Gebietsschemas 39: notcharacters39) in Kraft ist und POSIX :: setlocale aufgerufen wurde, wurde das Zeichen für den Dezimaltrennzeichen verwendet Formatierte Gleitkommazahlen werden durch das LCNUMERIC-Gebietsschema beeinflusst. Sehen Sie perllocale und POSIX. Der printf Befehl Stranger, das ist ein sehr großes Thema, das Erfahrung braucht - füllen Sie bitte fehlende Informationen aus, erweitern Sie die Beschreibungen und korrigieren Sie die Details, wenn Sie Achtung: Dies ist über den Bash-builtin Befehl printf - allerdings , Sollte die Beschreibung für einen externen Befehl, der POSIX folgt, nahezu identisch sein. GNU Awk erwartet ein Komma nach dem Formatstring und zwischen jedem der Argumente eines printf-Befehls. Beispiele finden Sie unter: Code-Snippet. Im Gegensatz zu anderen Dokumentationen möchte ich Sie nicht zur manuellen Seite für die printf () C-Funktionsfamilie umleiten. Allerdings, wenn you039re mehr erfahren, das sollte die detaillierteste Beschreibung für die Format-Strings und Modifikatoren sein. Aufgrund widersprüchlicher historischer Implementierungen des Echo-Befehls empfiehlt POSIX, dass printf über Echo bevorzugt wird. Der Befehl printf bietet eine Methode zum Drucken von vorformatierten Texten ähnlich der printf () Systemschnittstelle (C-Funktion). It039s meinte als Nachfolger für Echo und hat weit mehr Features und Möglichkeiten. Neben anderen Gründen hat POSIX ein sehr gutes Argument, es zu empfehlen: Beide historischen Hauptaromen des Echokommandos sind gegenseitig exklusiv, sie kollidieren. Ein Quellbefehl musste erfunden werden, um das Problem zu lösen. Das Textformat ist in ltFORMATgt angegeben. Während alle Argumente, auf die der Formatstring hindeuten kann, nachher gegeben werden, hier, angeführt durch ltARGUMENTSgt. So sieht ein typischer printf - call folgendermaßen aus: wo nameSname: snName: snquot ist die formatangabe und die beiden Variablen werden als argumente übergeben, die s im formatstring zeigt an (für jeden format spezifizierer gibt es printf auf ein argument) . Wenn gegeben, wird die Ausgabe der Variablen VAR zugewiesen, anstatt in stdout gedruckt zu werden (vergleichbar mit sprintf () in irgendeiner Weise) Die Option - v Option kann direkt in Array-Indizes in Bash-Versionen älter als Bash 4.1 zuweisen. In Versionen, die jünger als 4.1 sind, muss man bei der Ausführung von Erweiterungen in das erste Nicht-Option-Argument von printf vorsichtig sein, da dies die Möglichkeit einer einfachen Code-Injection-Schwachstelle eröffnet. Wo das Echo natürlich mit jedem beliebigen Befehl ersetzt werden kann. Wenn Sie müssen, geben Sie entweder einen hartcodierten Formatstring an oder verwenden Sie - um das Ende der Optionen zu signalisieren. Das genaue gleiche gilt auch für gelesen. Und ein ähnliches zu mapfile. Obwohl die Ausführung von Erweiterungen in ihre Argumente ist weniger häufig. Natürlich in der Shell-Bedeutung der Argumente sind nur Strings, aber die gemeinsamen C-Notationen plus einige Ergänzungen für Anzahl-Konstanten sind anerkannt, um ein Zahlen-Argument zu printf. Formating Numeric Print Output geben Sie früher die Verwendung des Drucks und Println Methoden zum Drucken von Strings auf Standardausgabe (System. out). Da alle Zahlen in Strings umgewandelt werden können (wie Sie später in dieser Lektion sehen werden), können Sie diese Methoden verwenden, um eine beliebige Mischung aus Strings und Zahlen auszudrucken. Die Java-Programmiersprache hat jedoch andere Methoden, die es Ihnen erlauben, viel mehr Kontrolle über Ihre Druckausgabe auszuüben, wenn Zahlen enthalten sind. Das Print - und Format-Verfahren Das Paket java. io enthält eine PrintStream-Klasse, die über zwei Formatierungsmethoden verfügt, die Sie verwenden können, um Druck und Druck zu ersetzen. Diese Methoden, Format und Druck. Sind einander gleich. Das vertraute System. out, das du benutzt hast, ist ein PrintStream-Objekt, also kannst du PrintStream-Methoden auf System. out aufrufen. So können Sie Format oder printf überall in Ihrem Code verwenden, wo Sie zuvor mit print oder println verwendet haben. Zum Beispiel ist die Syntax für diese beiden Methoden von java. io. PrintStream die gleiche: Wo Format ein String ist, der die zu verwendende Formatierung angibt und args eine Liste der zu druckenden Variablen mit dieser Formatierung ist. Ein einfaches Beispiel wäre der erste Parameter, Format. Ist eine Formatzeichenfolge, die angibt, wie die Objekte im zweiten Parameter args sind. Sind zu formatieren. Der Formatstring enthält Klartext sowie Formatspezifizierer. Die Sonderzeichen sind, die die Argumente von Object formatieren. Args (Das Notationsobjekt args heißt varargs, was bedeutet, dass die Anzahl der Argumente variieren kann.) Format-Spezifizierer beginnen mit einem Prozentzeichen () und enden mit einem Konverter. Der Konverter ist ein Zeichen, das die Art des zu formatierenden Arguments angibt. Zwischen dem Prozentzeichen () und dem Konverter können Sie optionale Flaggen und Spezifizierer haben. Es gibt viele Konverter, Flaggen und Spezifizierer, die in java. util. Formatter dokumentiert sind Hier ist ein grundlegendes Beispiel: Das d gibt an, dass die einzelne Variable eine Dezimalzahl ist. Das n ist ein plattformunabhängiger Keyline-Charakter. Die Ausgabe ist: Die Druck - und Formatmethoden sind überlastet. Jeder hat eine Version mit der folgenden Syntax: Zum Drucken von Ziffern im französischen System (wo ein Komma anstelle der Dezimalstelle in der englischen Darstellung von Gleitkommazahlen verwendet wird) würden Sie zB: Ein Beispiel Die folgende Tabelle verwenden Listet einige der Konverter und Flaggen auf, die im Beispielprogramm TestFormat. java verwendet werden. Das folgt dem tisch Konverter und Flaggen, die in TestFormat. java verwendet werden Zehn Zeichen in der Breite, rechtsbündig, mit drei Stellen nach Dezimalpunkt. Das folgende Programm zeigt einige der Formatierungen, die Sie mit dem Format machen können. Die Ausgabe wird in doppelten Anführungszeichen im eingebetteten Kommentar angezeigt: Anmerkung: Die Diskussion in diesem Abschnitt behandelt nur die Grundlagen der Format - und Printf-Methoden. Weitere Details finden Sie im Basic IO-Bereich des Essential Trails auf der Seite Formatierung. Verwenden von String. format zum Erstellen von Strings wird in Strings abgedeckt. Die DecimalFormat-Klasse Sie können die java. text. DecimalFormat-Klasse verwenden, um die Anzeige von führenden und nachlaufenden Nullen, Präfixen und Suffixen, Gruppierung (Tausend) Trennzeichen und dem Dezimaltrennzeichen zu steuern. DecimalFormat bietet viel Flexibilität bei der Formatierung von Zahlen, aber es kann Ihren Code komplexer machen. Das folgende Beispiel erzeugt ein DecimalFormat-Objekt, myFormatter. Indem Sie eine Musterzeichenfolge an den DecimalFormat-Konstruktor übergeben. Die Format () - Methode, die DecimalFormat von NumberFormat erbt. Wird dann von myFormatter aufgerufen 151it akzeptiert einen doppelten Wert als Argument und gibt die formatierte Nummer in einem String zurück: Hier ist ein Beispielprogramm, das die Verwendung von DecimalFormat veranschaulicht: In der folgenden Tabelle wird jede Zeile der Ausgabe erläutert.
No comments:
Post a Comment