ist eine Fortsetzung meiner ursprünglichen Frage: Perl- How do I insert a space before each capital letter except for the first occurrence or existing?Wie füge ich ein Leerzeichen zwischen einem alphanumerischen Zeichen und einem numerischen Zeichen ein? Diese
konnte ich ein gewünschtes Ergebnis des Einsetzens Raum zwischen Kappen mit nur Buchstaben in der Zeichenkette erreichen:
my $camel ="SomeCamel IsEnteringText";
$camel =~ s/(?<=[a-z])(?=[A-Z])/ /g;
$camel =~ s/([^[:space:]]+)/\u$1/g;
Drucke:
Einige Kamele geben Text ein
Aber, wenn Zahlen vorliegen, lief ich in Fragen:
my $camel ="Some 440Camel220 IsEntering100Text Nogo";
$camel =~ s/(?<=[a-z])(?=[A-Z])/ /g;
$camel =~ s/([^[:space:]]+)/\u$1/g;
Drucke:
Einige 440Camel220 Ist Entering100Text Nogo
Wunsch:
Einige 440 Camel 220 Eingabe von 100 Text Nogo
Also, wie füge ich jetzt ein Leerzeichen zwischen den Buchstaben und den Zahlen ein ?.
Ich habe dieses als die Antwort gewählt, weil ich nur zwei Zeilen nicht vier verwenden muss, um mein gewünschtes Ergebnis zu erhalten. Obwohl ich zugeben muss, arbeite ich noch daran, herauszufinden, was dort passiert! – DulcimerDude
Er macht im Grunde dasselbe wie meine Antwort. Die erste Hälfte der Gruppierung (getrennt durch '|') entspricht Übergängen zwischen Kleinbuchstaben und EHRER Großbuchstaben oder Ziffern, und die zweite Hälfte entspricht Übergängen zwischen Zahlen und Großbuchstaben. Diese Version wird 'a440' nicht in' a440' verwandeln; mein Wille. Ich weiß nicht, ob das wichtig ist. Ich denke auch, dass das äußerste "(?: ...)" unnötig ist. Tatsächlich macht es in diesem Ausdruck nichts. – mkb
Ich muss etwas Zeit verbringen und meinen Kopf darum wickeln. Ich denke, dass ich es ein bisschen verstehe. Ich bin dran, damit zu spielen, bis ich tatsächlich in der Lage sein werde, einen selbst zu schreiben (außerhalb der Einzelspieler)! Vielen Dank noch einmal ... – DulcimerDude