2017-05-14 3 views
-1

Ich möchte eine Zeichenfolge aufteilen, wenn die Groß-/Kleinschreibung geändert wird.Split-String, wenn die Groß-/Kleinschreibung geändert wird

Zum Beispiel habe ich zwei Strings: und abCDE.

Ich würde Ergebnisse ABC und cd auf dem ersten und ab und CDE auf dem zweiten. Anzahl der Klein- und Großbuchstaben sind nicht definiert.

Ich habe bereits mit preg_match und preg_split versucht, aber ich habe ein Problem, die richtigen regulären Ausdrücke zu definieren.

+2

Also, was ist das Problem? Bitte teilen Sie den Code, den Sie versucht haben, und erklären Sie, was damit nicht stimmt. –

+0

Ich habe verschiedene Regex Ausdrücke wie '/ ([az] + [AZ] +) | ([AZ] + [az] +) /' oder '/ ([az])? ([AZ]) /' aber ausprobiert sind beide falsch. – Azkidenz

+0

Sie könnten eine viel bessere Antwort als "versuchen-das" bekommen, wenn Sie das vorher gepostet haben. –

Antwort

0

Versuchen Sie, diese einfachste.

Try this code snippet here

<?php 

ini_set('display_errors', 1); 
$input = array("ABCcd","abCDE"); 
foreach ($input as $value) 
{ 
    preg_match_all("#[A-Z]+|[a-z]+#", $value, $matches); 
    print_r($matches[0]); 

} 
+0

Vielen Dank! Ich habe Ihre Lösung gewählt, weil ich denke, dass sie am saubersten ist! Danke noch einmal. – Azkidenz

+0

@Azkidenz willkommener Freund .... :) –

1

Vielleicht ist die passende Nullbreite eine Option.

Regex:(?<=[A-Z])(?=[a-z])|(?<=[a-z])(?=[A-Z])

Php-Code:

<?php 
    $str = "aaaaBddDDDeeFFggJ"; 
    $match = preg_split("/(?<=[A-Z])(?=[a-z])|(?<=[a-z])(?=[A-Z])/", $str); 

    foreach ($match as $value) { 
     echo "$value \n"; 
    } 
?> 

Eingangs Saiten:

ABCcd 
abCDE 
aaaaBddDDDeeFFggJ 

Ausgang:

ABC 
cd 
ab 
CDE 
aaaa 
B 
dd 
DDD 
ee 
FF 
gg 
J 

Regex101 Demo

Ideone Demo

+1

Vielen Dank für Ihre Antwort! – Azkidenz

0

Sie können preg_match_all von PHP versuchen, dass Sie ein Array mit den Ergebnissen geben.

preg_match_all('([A-Z]+|[a-z]+)',"ABCdeFGhAAAss", $matches); 
var_dump($matches); 

Beispiel: https://ideone.com/qITPI4

Verwandte Themen