Ich habe früher über Briefe geschrieben, aber das ist ein anderes Thema, ich habe eine JSON-Antwort, die 2 Objekte enthält, from
und to
, from
ist was zu ändern, und to
ist was es wird zu geändert werden.
Mein Code ist:
%Vor%Zum Beispiel ist die JSON-Antwort:
%Vor% String.replace()
Methode funktioniert hier nicht, weil es zuerst a
zu bhduh
ersetzt, dann b
zu eieja
, ABER hier ist das Problem, es wird b
in bhduh
konvertieren zu eieja
, was ich nicht möchte.
Ich möchte die Buchstaben und "Wörter" im String nach dem Json perfekt konvertieren, aber das, woran ich versage.
Neuer Code:
%Vor%Ausgabe:
%Vor%Hier ist eine Methode, die ausschließlich Java ist. Ich habe versucht, hier keine Java 8-Methoden zu verwenden.
%Vor%Der Algorithmus ist rekursiv und macht einfach Folgendes:
from
-Liste übereinstimmt
to
-Liste from
-Liste und wiederholen Sie den Algorithmus für den Rest der Zeichenfolge Ihre Frage wäre klarer, wenn Sie die erwartete Ausgabe für die Funktion angegeben hätten.
Angenommen, es ist: ab b test a b >>>> bhduheieja eieja neesjt bhduh eieja
Dann sehen Sie Folgendes, der Schlüsselpunkt im Javadoc ist "Dies wird nicht wiederholt"
Ersetzt alle Vorkommen von Strings innerhalb eines anderen Strings. Ein NULL-Verweis, der an diese Methode übergeben wird, ist ein No-Op oder, wenn überhaupt, "Suche" Zeichenfolge "oder" zu ersetzende Zeichenfolge "ist null, diese Ersetzung wird ignoriert. Dies wird nicht wiederholt. Um Wiederholungen zu wiederholen, rufen Sie das Überladene auf Methode.
Beispiel 1
%Vor%Beispiel 2
%Vor%Versuchen Sie Folgendes:
Lösung 1:
Überstreiche die String
-Zeichen nacheinander und verschiebe das neue String
in ein neues StringBuffer
oder StringBuilder
und rufe toString()
auf, um das Ergebnis zu erhalten. Dazu müssen Sie den String-Matching-Algorithmus implementieren.
Lösung 2 (mit Regex):
Dazu müssen Sie die Domain Ihrer Zeichenfolge kennen. Zum Beispiel ist es [a-zA-Z]
, dann können andere beliebige Zeichen (nicht Teil der Domäne) für den Zwischenschritt verwendet werden. Ersetzen Sie zuerst die tatsächlichen Zeichen durch beliebige und dann beliebige durch das Ziel . Im Beispiel unten sind [!@#]
die willkürlichen Zeichen. Dies kann auch ein zufälliger Wert \uxxxx
sein.
Ihr Problem ist ziemlich häufig. Um es zusammenzufassen:
%Vor% Gibt: this is bar test string with bar
Von Ihnen erwartet: this is foo test string with bar
Sie können StrSubstitutor
Aber zuerst müssen Sie Platzhalter in Ihre Zeichenfolge einfügen:
%Vor% Und dann benutze StrSubstitutor
Es gibt: this is foo test string with bar
Sie könnten split wie verwenden: %Code% dann parst du einfach das Von und Bis in jedes Stück und wendet sie mit replace () an, dann füge die Schnur wieder zusammen. (und bitte nutzen Sie Ihre Großschreibung Ihrer Variablen / Methoden richtig - macht es sehr schwer zu lesen, wie Sie es haben)
Warum halten Sie es nicht sehr einfach (wenn das JSON immer im selben Format ist, zB vom selben System). Anstatt from
durch to
zu ersetzen, ersetzen Sie das gesamte Markup:
Ersetze "from":"*from*"
durch "from":"*to*"
Tags und Links java