Ich denke, eine einfachere und elegantere Lösung zum Einfügen eines Strings an einer bestimmten Position wäre dieser Einzeiler:
target.replaceAll("^(.{" + position + "})", "$1" + insert);
So fügen Sie beispielsweise eine fehlende Zeichenfolge :
in eine Zeitzeichenfolge ein:
"-0300".replaceAll("^(.{3})", "$1:");
Was es tut, ist, position
Zeichen vom Anfang der Zeichenfolge abzugleichen, diese zu gruppieren und die Gruppe durch sich selbst ( $1
) zu ersetzen, gefolgt voninsert
Zeichenfolge ersetzt. Beachten Sie das replaceAll, auch wenn es immer ein Vorkommen gibt, da der erste Parameter ein regulärer Ausdruck sein muss.
Natürlich hat es nicht die gleiche Leistung wie die StringBuilder-Lösung, aber ich glaube, dass die Prägnanz und Eleganz eines einfachen und leichter lesbaren Einzeilers (im Vergleich zu einer großen Methode) ausreicht, um es zur bevorzugten Lösung für die meisten Nicht-Leistung zu machen -kritische Anwendungsfälle.
Hinweis: Ich löse das generische Problem im Titel aus Dokumentationsgründen. Wenn Sie mit Dezimalzahlen arbeiten, sollten Sie natürlich die bereits vorgeschlagenen domänenspezifischen Lösungen verwenden.
String str = Integer.toString(j); //integer or string with white spaces<br/> str = new StringBuffer(str.trim()).insert(str.length()-2, ".").toString();