Я думаю, что более простое и элегантное решение для вставки строки в определенную позицию - это одна строка:
target.replaceAll("^(.{" + position + "})", "$1" + insert);
Например, чтобы вставить отсутствующую :
строку времени:
"-0300".replaceAll("^(.{3})", "$1:");
Что он делает, сопоставляет position
символы в начале строки, группирует их и заменяет группу на себя ( $1
), за которой следуетinsert
строка. Обратите внимание на replaceAll, хотя всегда есть одно вхождение, потому что первый параметр должен быть регулярным выражением.
Конечно, он не обладает той же производительностью, что и решение StringBuilder, но я считаю, что краткость и элегантность в виде простого и удобного для чтения однострочного текста (по сравнению с огромным методом) достаточны для того, чтобы сделать его предпочтительным решением в большинстве не производительных систем. -критические сценарии использования.
Примечание. Я решаю общую проблему в заголовке по причинам, связанным с документацией. Конечно, если вы имеете дело с десятичными числами, вам следует использовать уже предложенные решения для конкретных областей.
String str = Integer.toString(j); //integer or string with white spaces<br/> str = new StringBuffer(str.trim()).insert(str.length()-2, ".").toString();