3 gleiche zeichen in zeichenkette java

  • #1

folgendes:

ich habe einen String mit sagen wir 9 Zeichen.

Nun will ich, das 3x3 Zeichen in einem Array stehen, also die Zeichenkette aller 3 Zeichen splitten.

wie mache ich das?

ich kenne Stringtokenizer etc., aber irgendwie stehe ich total auf dem schlauch, wie ich das am besten algoritmiere :bahnhof:

bzw. gibts ne Methode dafür?

  • #2

Moin,
benutz einfach die Methode substring() in der String-Klasse.

3 gleiche zeichen in zeichenkette java

meez

Top Contributor

  • #3

Da du den StringTokenizer ja kennst, wieso benutzt du ihn dann nicht :bahnhof:

  • #4

Wenn kein Trennzeichen enthalten ist, nutzt der StringTokenizer nichts.

  • #5

Vielleicht kannst du auch mit String#toCharArray was anfangen.

  • #6

willst du immer in eine 3 x 3 Matrix unterteilen oder ist das abhängig von der Länge des Strings ? (Vielleicht immer drei Zeilen und Anzahl Spalten variabel oder immer drei Spalten und Anzahl Zeilen variabel..?)

Ansonsten könntest du auch einfach zwei for Schleifen holen (verschachtelt), mit der du das 2d Array durchgehst, du kannst den Elementen ja dann die Zeichen an den jeweiligen Stellen des Strings zuweisen, in etwa so:

Code:

String myStr = "hallowelt"; char[][] myFeld = new char[3][3]; int count = 0; for(int i = 0;i < 3;i++) { for(int j = 0;j < 3;j++) { myFeld[i][j] = myStr.charAt(count++); } }

allerdings basiert der code darauf das der string auf jeden fall 9 zeichen lang ist (count wird nicht weiter überprüft), also dient nur zu Anschaungszwecken für ein 3 x 3 Feld.

  • #7

oder vielleicht etwas in diese richtung:

Code:

String s = new String ("adkljdskjldlkjdfds"); List a = new ArrayList(); for(int i = 0; i < s.length(); i = 0){ if(s.length() < 3){ a.add(s); System.out.println("weniger als 3 Zeichen!"); break; } else{ a.add(s.substring(i, i + 3)); s = s.substring(i + 3, s.length()); } }

  • #8

zur erklärung:

die Stringkette ist immer glatt durch 3 teilbar, also die Länge kann varieren, aber dann immer so, das x 3er teilzeichenketten ohne überbleibsel rauskommen.

bspl:

"test1test2test3test4a"

-->

"tes" ; "t1t" ; "est" ; "2te" ; .....

es ist also egal was da drin steht und wie lang die is, aber die soll immer in beliebig viele 3er Teile zerhackt werden.

danke für eure antworten und bspl.

  • #9

Dann mach nen char[][], das "äußere" Array hat die Größe Stringlänge/3, die "inneren" die Größe 3, mach nen chararray aus dem String, ne Zählervariable, geh mit ner geschachtelten for-Schleife durch das char[][] und tu immer an der jeweiligen Stelle stringchars[zähler++] rein.

  • #10

oder noch eine variante:

Code:

String s = new String ("adkljdskjldlkjd"); List a = new ArrayList(); while(s.length() > 2){ a.add(s.substring(0, 3)); s = s.substring(3, s.length()); } if(s.length() > 0 && s.length() < 3){ System.out.println("weniger als 3 Zeichen übrig!"); }

ist im prinzip das selbe wie oben, einfach kompakter...(das ist doch das, was du benötigst?)

  • #11

Illuvatar hat gesagt.:

Dann mach nen char[][], das "äußere" Array hat die Größe Stringlänge/3, die "inneren" die Größe 3, mach nen chararray aus dem String, ne Zählervariable, geh mit ner geschachtelten for-Schleife durch das char[][] und tu immer an der jeweiligen Stelle stringchars[zähler++] rein.

Von hinten durch die Brust ins Auge. :autsch:

3 gleiche zeichen in zeichenkette java

meez

Top Contributor

  • #12

Snape hat gesagt.:

Wenn kein Trennzeichen enthalten ist, nutzt der StringTokenizer nichts.

Hallo? Jedes Zeichen kann ja ein Tokenizer sein...:autsch:
So zum Beispiel gibt man alle Zeichen des Strings einzeln aus:

Code:

String s = "123456"; StringTokenizer str = new StringTokenizer(s, s, true); while (str.hasMoreTokens()) { System.out.println(str.nextToken()); }

  • #13

Huch, was es alles gibt...sieht mir allerdings etwas zweckentfremdet aus.

3 gleiche zeichen in zeichenkette java

meez

Top Contributor

  • #14

Snape hat gesagt.:

Huch, was es alles gibt...sieht mir allerdings etwas zweckentfremdet aus.

yep... :roll:

  • #15

Snape hat gesagt.:

Illuvatar hat gesagt.:

Dann mach nen char[][], das "äußere" Array hat die Größe Stringlänge/3, die "inneren" die Größe 3, mach nen chararray aus dem String, ne Zählervariable, geh mit ner geschachtelten for-Schleife durch das char[][] und tu immer an der jeweiligen Stelle stringchars[zähler++] rein.

Von hinten durch die Brust ins Auge. :autsch:

Wieso?

Code:

public char[][] splitString (String s) { char[] stringChars = s.toCharArray(); char[][] splitted = new char[stringChars.length / 3][3]; int cnt = 0; for (int i = 0; i < splitted.length; i++){ for (int j = 0; j < 3; j++){ splitted[i][j] = stringChars[cnt++]; } } return splitted; }

Edit: Ich seh jetzt erst, is ja fast dasselbe wie von mic_checker

3 gleiche zeichen in zeichenkette java

meez

Top Contributor

  • #16

So ... ich präsentiere auch noch eine Lösung:

Code:

public List splitString(String s) { final List l = new ArrayList(); for (int offset =0; offset < s.length();offset += 3) { l.add(s.substring(offset , offset + (s.length() >= offset + 3 ? 3:s.length() - offset))); } return l; }

Oder hier sogar noch mit Angabe der Teillänge:

Code:

public List splitString(String s, int length) { final List l = new ArrayList(); for (int offset =0; offset < s.length();offset += length) { l.add(s.substring(offset , offset + (s.length() >= offset + length ? length:s.length() - offset))); } return l; }

  • #17

super danke, auf euch is echt verlass

  • #18

Hej,

Hat zwar nicht mit dem ursprünglichem Problem zu tun, aber die Suche führte mich zu diesem aktuellen Thread:

daLenz hat gesagt.:

Code:

List a = new ArrayList();

warum sagt mir der Eclipse-Compiler, dass ArrayList zu List _nicht_ zuweisungskompatibel ist? Der Code ist bis auf diese eine Zeile (wenn ich sie z.B. auskommentiere) fehlerfrei.

Vielleicht weiß ja jemand Rat.

Beste grüße
Biesterfeld

3 gleiche zeichen in zeichenkette java

meez

Top Contributor

  • #19

Hast du eventuell das falsche List Interface importiert?
Du musst java.util.List nehmen, nicht java.awt.List...

  • #20

Diese Anweisung ist mit Sicherheit korrekt, scheck mal die imports.

edit: too slow

  • #21

jo wie schon gesagt...muss java.util.List sein!

  • #22

Hej,

Du musst java.util.List nehmen, nicht java.awt.List...

man man man ...
das kommt davon wenn man es sich einfach machen will.

Habt vielen Dank!
Biesterfeld

  • #23

wie kann ich hier eigentlich ein Häckchen reinmachen?

im Prinzip hat sich der Thread ja erledigt

3 gleiche zeichen in zeichenkette java

meez

Top Contributor

  • #24

Unten Links hats ein Häkchensymbol...