2013-08-01 5 views
10

Wie kann ich eine Zeichenfolge durch 2 Zeichen mit shifting teilen. Zum Beispiel;Java, Teilung von String mit Verschiebung

Mein String = todayiscold

Mein Ziel ist: "to","od","da","ay","yi","is","sc","co","ol","ld"

aber mit diesem Code:

Arrays.toString("todayiscold".split("(?<=\\G.{2})"))); 

erhalte ich: ` "auf", "da", "yi", "co", "ld"

jemand hilft?

+4

String.split an bestimmten Punkten geteilt wird. Diese Zeichenfolgen können sich per Definition nicht überlappen. –

Antwort

7

Try this:

 String e = "example"; 
     for (int i = 0; i < e.length() - 1; i++) { 
      System.out.println(e.substring(i, i+2)); 
     } 
+2

@Jason Ich stimme zu, aber effiziente Lösung in der Regel komplexer, hier schlage ich einfache und leicht verständliche Lösung. In dieser Frage geht es überhaupt nicht um Leistung. – nkukhar

+1

Nein, dem stimme ich nicht zu. Sie sollten über Leistung nachdenken, wo es Meter misst. "Vorzeitige Optimierung ist die Wurzel allen Übels (oder zumindest des größten Teils davon) in der Programmierung" ([Donald Knuth] (http://en.wikiquote.org/wiki/Donald_Knuth)) – nkukhar

+0

Zweithäufig falsch verstandenes Zitat in der Geschichte der Programmierung. – jason

4

eine Schleife verwenden:

String test = "abcdefgh"; 
List<String> list = new ArrayList<String>(); 
for(int i = 0; i < test.length() - 1; i++) 
{ 
    list.add(test.substring(i, i + 2)); 
} 
1

Sie kann nicht split in diesem Fall verwenden, da alle Split statt findet in diesem Ort zu spalten und Bremse Zeichenfolge, so Sie können nicht das gleiche Zeichen in zwei Teilen erscheinen lassen.

Stattdessen können Sie Pattern/Matcher Mechanismen wie

String test = "todayiscold"; 
List<String> list = new ArrayList<String>(); 

Pattern p = Pattern.compile("(?=(..))"); 
Matcher m = p.matcher(test); 
while(m.find()) 
    list.add(m.group(1)); 

oder noch besser Iterierte über Ihre Atring Zeichen verwenden und erstellen Strings wie in D-Rock answer

2

Nach regex basierten Code funktionieren sollte:

Trick ist end()-1 vom letzten Spiel in derzu verwendenMethode.

Ausgang:

Matches => [to, od, da, ay, yi, is, sc, co, ol, ld]