Creo que una solución más simple y elegante para insertar una cadena en una determinada posición sería esta frase:
target.replaceAll("^(.{" + position + "})", "$1" + insert);
Por ejemplo, para insertar una falta :
en una cadena de tiempo:
"-0300".replaceAll("^(.{3})", "$1:");
Lo que hace es, coincide con los position
caracteres desde el principio de la cadena, agrupa eso y reemplaza el grupo con sí mismo ( $1
) seguido por elinsert
cadena. Tenga en cuenta el replaceAll, aunque siempre haya una ocurrencia, porque el primer parámetro debe ser una expresión regular.
Por supuesto, no tiene el mismo rendimiento que la solución StringBuilder, pero creo que la concisión y la elegancia como una sola línea simple y más fácil de leer (en comparación con un método enorme) es suficiente para convertirla en la solución preferida en la mayoría de los casos sin rendimiento -críticos casos de uso.
Tenga en cuenta que estoy resolviendo el problema genérico en el título por razones de documentación, por supuesto, si se trata de números decimales, debe usar las soluciones específicas de dominio ya propuestas.
String str = Integer.toString(j); //integer or string with white spaces<br/> str = new StringBuffer(str.trim()).insert(str.length()-2, ".").toString();