Hilfe bei Split mit Regexp

T

Thomas Wi

Ich habe per Regexp krampfhaft versucht einen String zu splitten der wie folgt aussieht:

ashfdjah002 also ne Folge von Buchstaben und dahinter dann eine Zahlenfolge.

Ich hätte nun gerne zwischen Buchtaben und Zahlenfolge ein Leerzeichen.

PHP:
		String x = "hallo123";
		String[] xy = x.split("[0-9]");
		String[] xxy = x.split(xy[0]);
		String neu = xy[0] + " " + xxy[1];
		System.out.println(neu); // "hallo 123"

Das funktioniert soweit, aber eigentlich sollte das doch auch in einem Aufwasch gehen, oder? Kann mir wer helfen?

Danke
 
Moin,

die grundlegende Frage ist, wie denn die Strings generell ausschauen :confused:
Ist es immer die Form "n Buchstaben + m Ziffern" oder können auch andere Zeichen (ggf. auch in anderer Kombination, also BU ZI BU) vorkommen ?

Gruß
Klaus
 
Hey

so etwas könnte dir vllt helfen:

PHP:
<?php
$zeichenkette = "hallo123"; 
$suchmuster = '([a-zA-Z])([0-9])';
preg_match($suchmuster, $zeichenkette, $treffer);

echo $treffer[0] . ' ' . $treffer[1];

?>

Du gruppierst deine zwei "Bereiche" Buchstaben und Ziffern ... und kannst die dann über das Index erreichen.

mfg
bo
 
Öhm, die Regex aber dann mit Java nutzen, das was Bergonline geschrieben hat, ist php und wird so in java net funktionieren :D Auch wenn oben schon fälschlicherweise php-code tags genutzt wurden
 
:-D

Darauf hatte ich vorhin nur geachtet - danke für den Hinweis

aber hier nochmal in JAVA

Java:
  String test = "hallo123";
  Pattern p = Pattern.compile("([a-zA-Z])([0-9])");
  Matcher m = p.matcher(test); 
  System.out.println(m.group(0) + " " + m.group(1));

mfg
bo
 
Ja es handelt sich natürlich um Java nicht um PHP :S

Und die Strings sehen so aus wie bereits gesagt, n Buchstaben + n Ziffern, keine Sonderzeichen oder sonstiges dazwischen und auch nichts danach oder davor!

:-D

Darauf hatte ich vorhin nur geachtet - danke für den Hinweis

aber hier nochmal in JAVA

Java:
  String test = "hallo123";
  Pattern p = Pattern.compile("([a-zA-Z])([0-9])");
  Matcher m = p.matcher(test); 
  System.out.println(m.group(0) + " " + m.group(1));

mfg
bo

genau sowas suche ich, leider will das Beispiel bei mir nicht.
java.lang.IllegalStateException: No match found

Exakt 1:1 kopiert von dir ... geht das bei dir wirklich so ?
 
Hey,


entschuldige..die while Schleife hat noch gefehlt.

Java:
        String test = "hallo123";
        Pattern p = Pattern.compile("([a-zA-Z]*)([0-9]*)");
        Matcher m = p.matcher(test);

        while (m.find()) {
            System.out.println(m.group(1) + " " + m.group(2));
        }

Habs gerade getestet.
Läuft :)

mfg
bo
 
Hey,


entschuldige..die while Schleife hat noch gefehlt.

Java:
        String test = "hallo123";
        Pattern p = Pattern.compile("([a-zA-Z]*)([0-9]*)");
        Matcher m = p.matcher(test);

        while (m.find()) {
            System.out.println(m.group(1) + " " + m.group(2));
        }

Habs gerade getestet.
Läuft :)

mfg
bo

super funktioniert, nur noch kurz warum in ner while Schleife ?

Ich vermute die schleife ansich damit er nichts ausgibt, falls kein Treffer gefunden wurde, ich würde da dann eher zum if tendieren, also:

Java:
if (m.find()){
	            System.out.println(m.group(1) + " " + m.group(2));
	        }

Oder gibt es einen Grund der für das while spricht den ich gerade überseh ?

Auf jedenfall funktionierts :) Vielen Dank !
 
Gerne :)

While oder if, kann ich dir nicht genau sagen.
Geht beides.

While ist - glaub ich - dann erforderlich , wenn in deinem String mehrere Treffer vorkommen.
Aber wie gesagt, genau weiß ich es nicht.

mfg
bo
 
Zurück