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-Key: 580484

Url: https://administrator.de/contentid/580484

Printed on: April 19, 2024 at 12:04 o'clock

Member: eisbein
eisbein Jun 19, 2020 updated at 08:19:08 (UTC)
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
Member: tsunami
tsunami Jun 19, 2020 at 08:29:37 (UTC)
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
Member: eisbein
eisbein Jun 19, 2020 updated at 08:52:33 (UTC)
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 ...
Member: tsunami
tsunami Jun 19, 2020 at 09:53:27 (UTC)
Goto Top
Hi,
erstmal nur alle Kombis mit Groß- und Kleinschreibung. Die links sind interessant, schaue ich durch.
Vielen Dank erstmal.
mfG
tsunami
Member: colinardo
Solution colinardo Jun 19, 2020 updated at 11:03:24 (UTC)
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
Member: tsunami
tsunami Jun 21, 2020 at 15:29:32 (UTC)
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