Wie verketten Sie 2 oder mehr Strings in einem String Array in Java?

8

Ich möchte 2 oder mehr aufeinanderfolgende Strings zu einer Zeichenkette in einem Array verketten, entsprechend den beiden Variablen x und y , was bedeutet, dass beginnend mit dem x: th Element verkettet wird, bis wir y Elemente verkettet haben. Zum Beispiel, wenn ein Array 'A' Elemente wie folgt hat:

%Vor%

So. Wer weiß, wie dies ohne komplexe Programmierung getan werden kann?

    
Dante 25.12.2017, 11:13
quelle

8 Antworten

6

Der wahrscheinlich prägnanteste Weg ist:

  1. Konstruiere ein Array der richtigen Größe:

    %Vor%
  2. Kopieren Sie den Anfang und das Ende des Arrays mit System.arraycopy :

    %Vor%
  3. Erstellen Sie die verkettete Zeichenfolge:

    %Vor%

(Hinweis: durch einen Fehler kann vorhanden sein, aufgrund des Datums des Schreibens)

    
Andy Turner 25.12.2017, 15:17
quelle
2

Hier ist ein funktionierendes Skript, obwohl ich nicht weiß, wie einfach Sie es betrachten würden. Der Algorithmus geht einfach über das Eingabearray und kopiert Strings in die Ausgabe, bis wir den ersten Eintrag erreichen, der durch den Wert x bestimmt wird. Dann verketten wir die y -Zahl der Begriffe zu einer einzigen Zeichenfolge. Schließlich beenden wir das Kopieren der übrigen Begriffe nacheinander.

%Vor%

Demo

    
Tim Biegeleisen 25.12.2017 11:43
quelle
1

Hier ist ein sehr einfacher prozeduraler Ansatz:

%Vor%

Erläuterung:

  • Für jedes Element im Inout-Array:
  • Fügen Sie das Element zum Rückgabewert hinzu, wenn der x - 1 index oder die Verkettung nicht abgeschlossen hat.
  • Wenn wir x - 1 erreicht und die Verkettung nicht abgeschlossen haben, fügen Sie das Element zum Zeichenfolgengenerator hinzu.
  • Wenn die Verkettung abgeschlossen ist (angezeigt durch count == 0 ), fügen Sie die verkettete Zeichenfolge zum Rückgabewert hinzu.
Sweeper 25.12.2017 11:45
quelle
1

Möglich mit Listen.

%Vor%     
Surinder 25.12.2017 12:24
quelle
1

Es sollte mit einer for-Schleife und dem Halten von Indizes gemacht werden

%Vor%

Siehe mein Snippet auf ideone

    
Charan 25.12.2017 11:49
quelle
1

Mit der List API können wir die subList Methode sowie die addAll Methode zum Ändern eines bestimmten Abschnitts einer Liste und Einfügen von Elementen in eine Liste an der angegebenen Position.

Außerdem verwenden wir die Zeichenfolge Ersetzen Methode, um die redundante String-Repräsentation einer Liste zu entfernen und schließlich die Akkumulatorliste in ein Array von Strings umzuwandeln.

%Vor%

nennt es so:

%Vor%

erzeugt:

%Vor%

und nenne es so:

%Vor%

erzeugt:

%Vor%

Wie es ist, gibt es keine Validierung für den Parameter start und count , aber ich überlasse das als Übung für Sie.

    
Aominè 25.12.2017 11:53
quelle
0

Um Strings in Android zu verketten, können wir TextUtils.copyOfRange() class verwenden. Für den Rest können wir mit System.arraycopy() Methode gehen, um Schleifen zu vermeiden:

%Vor%     
DmitryArc 25.12.2017 13:37
quelle
0

Eine weitere Alternative, die die Bibliothek java.util.stream verwendet:

Dies verwendet IntStream.range , um die neue Größe der Ausgabe-Liste festzulegen und int s zu generieren, die Indizes in der Ausgabesequenz darstellen.

Dann wird .mapToObj für jeden Ausgabe-Index verwendet, um zu entscheiden, was in die jeweilige Position geschrieben werden soll (Ausgabe hat nur einen einzigen Index für die verbundenen Zeichenfolgen).

Es gibt im Wesentlichen 3 Möglichkeiten für die Ausgabe - die durch die Methode getOrMergeData entschieden werden:

  • Vor dem Index der verbundenen Strings - benutze data[index]
  • Nach dem Index der verbundenen Strings - benutze data[index + count - 1]
  • Am Index der verbundenen Zeichenfolgen - verwenden Sie Arrays.copyOfRange und string.Join , um die Zeichenfolgen zu verbinden, die zusammengeführt werden müssen.

Klicken Sie zum Ausführen Beispiel:

%Vor%

Ausgabe:

%Vor%     
Ben Cottrell 25.12.2017 14:16
quelle

Tags und Links