I Array von String haben, die wie folgt aussieht:STRING: ersetzen Muster mit formatierten Zahl
someThing/one_text_0000_temperature****
another/two_text_0000_temperature****
where/three_text_0000_temperature****
I variable Schritt haben.
int step
Ich brauche diese **** mit der Nummer in der Variablen Schritt zu ersetzen.
Ausgabebeispiel, wenn Schritt 94:
someThing/one_text_0000_temperature0094
another/two_text_0000_temperature0094
where/three_text_0000_temperature0094
Problem ist, dass einige * ändert. Nun, wenn das Programm läuft, ist es für jede Zeichenkette konstant und gleich. Aber diese Zeichenfolgen stammen aus der Datei. Anzahl von * kann beim nächsten Programmstart anders sein, Datei hat sich geändert.
denke ich, dass ich das in 3 Schritten tun: Finden Sie Anzahl der Sterne, das Format Schritt in String und finaly Teil der Zeichenfolge mit neuem String
Frage 1) ersetzen wie Anzahl der Sterne, um herauszufinden?
Frage 2) Wie Schritt Variable in dynamische Länge Zeichenfolge formatieren? Nicht wie folgt aus:
String.format("%04d", step); // how to change that 4 if needed?
Frage 3) wie durch eine andere Zeichenfolge
Teil der Zeichenfolge ersetzen Diese durch den Aufruf ersetzen getan werden könnte. Nicht sicher, ob line = line.replace() effizient/korrekt ist?
String line = new String("someThing/one_text_0000_temperature****");
String stars = new String("****"); // as result of step 1
String stepString = new String("0094"); // as result of step 2
line = line.replace(stars, stepString);
Vielen Dank für Tipps/
Edited für Inspiration
Danke helfen. Ich habe einige weitere Ideen, die hier Simple way to repeat a String in java und meine letzte Code:
int kolko = line.length() - line.indexOf("*");
String stars = String.format("%0"+kolko+"d", 0).replace("0", "*");
String stepString = String.format("%0"+kolko+"d", step);
I Linien in HashMap gespeichert haben, so kann ich verwendet Lambda
lines.replaceAll((k, v) -> v.replace(stars, stepString));
wenn Sterne am Ende nur vorhanden sind Ihrer 'line', können Sie ihre Anzahl berechnen:' int starIndex = line.indexOf ("*"); int numberOfStars = line.length() - line_string (starIndex) .length(); 'Die Methode' indexOf (String str) 'gibt das erste Vorkommen eines Zeichens/einer Zeichenkette in der Zeichenkette zurück. – peech