2017-09-29 1 views
1

Bitte führen Sie mich, wie können wir Alphabete von b bis z in For-Schleife drucken. Ich möchte so etwas wie unten:Verständnis Schleife Struktur in Powershell

for x in {b..z} { 
testdata.$x } 

Ich habe die unten versucht, aber etwas verwirrend ich einfach a..z mit meinem Testdaten ausdrucken möchten, wo soll ich meine Testdaten setzen

$alphabet = @() 

for ([byte]$c = [char]'b'; $c -le [char]'d'; $c++) 
{ 
    $alphabet += [char]$c 
} 

[String]::Join(", ", $alphabet) 

Tq

Antwort

1

Etwas wie folgt aus:

for ([byte]$c = [char]'b'; $c -le [char]'z'; $c++) 
{ 
    "testdata.$([char]$c)" 
} 
1

Die [char] ty pe accelerator konvertiert einen Integer-Wert in sein ASCII-Zeichenäquivalent (technisch ist es eigentlich das ANSI-Zeichenäquivalent, aber lasst uns das jetzt ignorieren, da es für die vorliegende Angelegenheit irrelevant ist).

Wenn Sie sich die ASCII table ansehen, sehen Sie, dass Großbuchstaben AZ von 65 bis 90 und Kleinbuchstaben von 97 bis 122 reichen. Zum Erstellen einer Liste der Zeichen "b" bis "z" verwenden Sie die range operator, um eine Liste der Integer-Werte 98 bis 122 zu erhalten und diese an [char] zu übertragen.

$alphabet = 98..122 | ForEach-Object { [char]$_ } 
+0

Vielen Dank für die Erklärung !!! – gary

1

Ihr ursprünglicher Code, 141 Zeichen.

Autosvets Code, 52 Zeichen.

Ansgar Wiecher Code, 49 Zeichen

das Alphabet Schreiben und es zu einer Reihe von Zeichen Gießen ist kürzer und klarer:

$alphabet = [char[]]'bcdefghijklmnopqrstuvwxyz' 

zB

$alphabet | foreach-object { 

    "testing-$_" 

} 
+1

Wenn Sie nach Zeichenanzahl optimieren möchten: '$ a = 98..122 |% {[char] $ _}', 22 Zeichen. ;) –

+0

@AnsgarWiechers Ich möchte es nicht so weit wie möglich golfen, aber ich finde es lächerlich und bizarr, dass Leute "das (englische) Alphabet" wollen und statt ein einfaches, klares, stringelles Literal aus 26 Zeichen schreiben und Wenn man es aufzählt, schreiben die Leute lieber drei- oder viermal so viel Code, mit viel mehr Mechanismen - Schleifen, Schleifenvariablen, dreifachen Mengen von Casting, magischen ganzen Zahlen, mehreren Codezeilen. Ja '98..122' ist kurz, aber es ist weniger klar, dass sie" ASCII-Zeichen von 'b' bis 'z' "sind und überhaupt nicht klar, dass 98 absichtlich bei 'b' beginnt und kein Fehler für 'a' ist. – TessellatingHeckler

+1

@AnsgarWiechers aber wenn ich wollte: '[char []] $ a = 98..122' ist 18 Zeichen;) – TessellatingHeckler

Verwandte Themen