2016-04-15 15 views
1

Lassen Sie uns sagen, ich habe diese Zeichenfolge:Druck von einer Instanz einer Zeichenfolge zu einem anderen

[0 1 2] 
[0 1 1] 
[0 1 3] 
[1 2 3] 
[2 4 6] 
[9 5 2] 
[0 1 3] 

ich alles aus einer Instanz von [0 1 3 auf die nächste Instanz von [0 1 3] drucken möchten. In diesem Beispiel möchte ich drucken:

[0 1 3] 
[1 2 3] 
[2 4 6] 
[9 5 2] 
[0 1 3] 

Wie würde ich dies in Java tun? Um Worte zu fragen, gibt es eine Möglichkeit, dass ich verwenden kann, um es irgendwie zu manipulieren, um dies zu drucken, oder muss ich den Index der ersten Instanz holen, weitermachen, bis ich die nächste erreiche?

+2

Das ist also ein String mit mehreren Linien? – Tunaki

+1

Drucken Sie einfach den Teilstring zwischen den beiden, wie Sie in Ihrer Frage angegeben haben ... –

+0

Ja, es ist eine Zeichenfolge mit mehreren Zeilen. Und wie würde ich den Teilstring zwischen den beiden ausdrucken? indexof würde nur das erste Vorkommen zurückgeben, oder? – Ccyan

Antwort

1

Sie könnten dies tun, indem Sie die Teilkette beginnend mit dem ersten Index von [0 1 3] bis zum zweiten Index von [0 1 3]. Der zweite Index wird durch Aufruf von indexOf(str, fromIndex) gefunden: Diese Methode beginnt mit dem gegebenen Index zu beginnen, also geben wir ihr den ersten gefundenen Index (so verschoben, dass sie den bereits gefundenen Index nicht findet).

Der folgende Code speichert die Zeichenfolge in str und die nachgeschlagene Sequenz in sequence. Der erste Index wird abgerufen. Wenn es gefunden wird, suchen wir den zweiten Index und, wenn dieser auch gefunden wird, nehmen wir den Teilstring. Wir müssen sequence.length() hinzufügen, wenn Sie den Teilstring für die letzte Sequenz verwenden, die Sie behalten möchten.

public static void main(String[] args) { 
    String str = "[0 1 2]\n[0 1 1]\n[0 1 3]\n[1 2 3]\n[2 4 6]\n[9 5 2]\n[0 1 3]"; 
    String sequence = "[0 1 3]"; 

    int firstIndex = str.indexOf(sequence); 
    if (firstIndex >= 0) { 
     int secondIndex = str.indexOf(sequence, firstIndex + sequence.length()); 
     if (secondIndex >= 0) { 
      String result = str.substring(firstIndex, secondIndex + sequence.length()); 
      System.out.println(result); 
     } 
    } 

} 

druckt

[0 1 3] 
[1 2 3] 
[2 4 6] 
[9 5 2] 
[0 1 3] 
+0

Ah das ist ordentlich. Vielen Dank! – Ccyan

Verwandte Themen