tsunami
Goto Top

String Groß - Kleinschreibung alle Kombinationen

Hallo zusammen,
ich bin gerade dabei etwas mit Strings herum zu spielen.
Aktuell probiere ich folgendes:
Alle Kombinationen von Groß- Kleinschreibung.
Also:
maus
MAUS
Maus
mAus
mAUs
usw.

Ein Ansatz ist das ganze einfach analog nach dem Binärsystem zu machen.
Da habe ich im Prinzip genau das.
0000
0001
0010
0100
1000
0011
usw.
Dann das Ganze
mit sowas wie if($string[$x]==1) ucfirst(...) und dann nur den einen Buchstaben. Oder str_replace(buchstabex, großerbuchstabex,string). In c gab es sowas wie "a" + n =A, meine ich.
Irgndwer eine Idee?
Danke im vorraus
tsunami

Content-ID: 580484

Url: https://administrator.de/forum/string-gross-kleinschreibung-alle-kombinationen-580484.html

Ausgedruckt am: 08.04.2025 um 13:04 Uhr

eisbein
eisbein 19.06.2020 aktualisiert um 10:19:08 Uhr
Goto Top
Hallo,

Du kannst dir auch den ASCII-Code zur Hilfe nehmen.

ZB. hat a den Dez-Code 97 und A den Dez-Code 65 - also eine fixe Differenz von 32 zwischen Groß- und Kleinbuchstaben.
Umlaute und Sonderzeichen musst du extra testen.

Gruß
eisbein

Edit:
Sieh dir dazu die PHP-Funktionen chr() und ord() an
tsunami
tsunami 19.06.2020 um 10:29:37 Uhr
Goto Top
Genau, Ascii wars.
Aber dann müsste ich ja drumherum eine Routine bauen, die den String nach dem Binärsystem zerlegt, oder?
Also
pos 0 m+32
pos 1 a+32
pos 2 u+32
pos3 s+32
pos 0 und pos 1 m und a +32
pos 0 und pos 2 m und u +32
...
Dieser Zähler ist das Problem. Einfach
maus
Maus
mAus
maUs
mauS
MAUS
reicht ja nicht, ich muss ja irgdnwie die Kombinationen von 2 und 3 großen Buchstaben verpacken...
Danke für die Rückmeldung
tsunami
eisbein
eisbein 19.06.2020 aktualisiert um 10:52:33 Uhr
Goto Top
Hallo,

Um was geht es dir genau? Willst du nur alle möglichen Varianten erzeugen oder willst du Strings vergleichen?

Aber dann müsste ich ja drumherum eine Routine bauen, die den String nach dem Binärsystem zerlegt, oder?

Ja, um eine Schleife wirst du nicht rum kommen face-wink

Hier ein Denkanstoß: https://stackoverrun.com/de/q/559086

Gruß
eisbein

Edit:
Richtig wäre m - 32 = M (nicht +)

Edit2:
Das hier sollte genau deinen Wünschen entsprechen: https://stackoverflow.com/questions/44724631/php-all-combination-upper-a ...
tsunami
tsunami 19.06.2020 um 11:53:27 Uhr
Goto Top
Hi,
erstmal nur alle Kombis mit Groß- und Kleinschreibung. Die links sind interessant, schaue ich durch.
Vielen Dank erstmal.
mfG
tsunami
colinardo
Lösung colinardo 19.06.2020 aktualisiert um 13:03:24 Uhr
Goto Top
Servus.
Weitere mögliche Variante:
function GetCases($string,$prefix = "",$result = array()){  
    if ($string == ""){   
        $result = $prefix;
    }else{
	$result = GetCases(substr($string,1),($prefix . strtolower(substr($string,0,1))),$result);
	$result = GetCases(substr($string,1),($prefix . strtoupper(substr($string,0,1))),$result);
    }
    return $result;
}
print_r(GetCases("maus"));  

Array
(
     => maus
    [1] => mauS
    [2] => maUs
    [3] => maUS
    [4] => mAus
    [5] => mAuS
    [6] => mAUs
    [7] => mAUS
    [8] => Maus
    [9] => MauS
    [10] => MaUs
    [11] => MaUS
    [12] => MAus
    [13] => MAuS
    [14] => MAUs
    [15] => MAUS
)
Grüße Uwe
tsunami
tsunami 21.06.2020 um 17:29:32 Uhr
Goto Top
Hi,
das ist ja noch besser. Aber ich muss gestehen ich steige da nicht durch.
Ich mache ein leeres Array result auf.

	$result = GetCases...
Dann rufe ich die Funktion in sich selber auf und als Parameter 1 (string) nehme ich die Buchstaben ab dem ersten (aus)
substr($string,1)
Parameter 2 (prefix) wird (erst leer) erweitert um den ersten Buchstaben von $string (M) als Kleinbuchstabe. (m)
$prefix . strtolower(substr($string,0,1)
Diese beiden Zeilen packe ich ins array result m+ aus =maus Soweit verstanden.
Was macht enn die zweite Zeile???
$result = GetCases(substr($string,1),($prefix . strtoupper(substr($string,0,1))),$result);
Ich fülle das array mit einer weiteren Zeile , prefix ist doch wieder geleert ($prefix="0") und dann wird M + aus zusammengesetzt. = Maus
Wo passiert er Durchlauf und er Wechsel??? Also strtoupper von a,u, s, au, as aus usw.???
WÄre nett, wenn ichs verstehen würde...
Gruß
tsunami