Invertieren Sie die Format-Methode.
Die FormatMethode der String-Klasse (oder gleichwertig wie sprintf) ist in den meisten Sprachen verfügbar. Grundsätzlich ist ein "Format" -String erforderlich, der Platzhalter mit einer zusätzlichen Formatierung sowie null oder mehr Werte enthalten kann, die anstelle dieser Platzhalter eingefügt werden sollen.
Ihre Aufgabe ist es, die Umkehrfunktion in der Sprache Ihrer Wahl zu implementieren.
API
Der Methodenname sollte entweder format1oder sein deformat.
Eingabe : Der erste Parameter ist die Zeichenfolge "Format", genau wie bei der ursprünglichen Formatierungsmethode. Der zweite Parameter ist der analysierte String (siehe Beispiele unten). Es sind keine weiteren Parameter erforderlich oder zulässig.
Ausgabe : Ein Array (oder das Äquivalent der Sprache Ihrer Wahl) von Werten, die entsprechend den Platzhaltern im Format extrahiert wurden.
Die Platzhalter sind {0}, {1}, {2}etc.
Im Falle eines schlechten Formats können Sie einen Fehler auslösen oder das zurückgeben, was Sie möchten.
Im Falle einer ungültigen Eingabe können Sie einen Fehler auslösen oder das zurückgeben, was Sie möchten. Ungültige Eingabe ist eine solche , die nicht von String.Format mit demselben Format - String, zum Beispiel erzeugt werden können: '{0}{0}', 'AAB'.
Beispiele
deformat('{0} {1}', 'hello world') => ['hello', 'world']
deformat('http{0}://', 'https://') => ['s']
deformat('http{0}://', 'http://') => [''] // array of one item which is an empty string
deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB']
Mehrdeutigkeit
Im Zweifelsfall können Sie jede geeignete Antwort zurückgeben. Beispielsweise:
deformat('{0} {1}', 'Edsger W. Dijkstra')
// both ['Edsger', 'W. Dijkstra'] and ['Edsger W.', 'Dijkstra'] are applicable.
Noch ein paar Regeln
- Zur Vereinfachung muss die Formatierung nicht unterstützt werden. Sie können alles über führende Nullen, Dezimalstellen oder Rundungsprobleme vergessen. Generieren Sie einfach die Werte als Zeichenfolgen.
- Um es nicht trivial zu machen, sind reguläre Ausdrücke nicht erlaubt .
- Sie müssen sich bei der Eingabe nicht um geschweifte Klammern kümmern (dh der zweite Eingabeparameter enthält keine
{s oder}s).
Gewinnen
Das ist Code-Golf ! (sollte als "Dies ist Sparta!" gelesen werden) Die richtige Funktion mit der kürzesten Länge gewinnt. Standardlücken sind verboten.
['', 'AAAA'], ['A', 'AA'],['AA', '']
deformat('{0}{1}{0}', 'ABBA') => ['', 'ABBA']? Wenn ja, gibt es eine billige Lösung, es sei denn, jede Zeichenfolge erscheint mindestens zweimal.
deformat('{0}_{1}_{0}', 'A_BB_A')?
deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB'], was passiert , wenn wir statt gegebendeformat('{0}{1}{0}', 'AAAA')?