paquete com.ruoyi.common.core.text; importar com.ruoyi.common.utils.StringUtils; /** * Formato de cadena * * @autor ruoyi */ public class StrFormatter { public static final String EMPTY_JSON = "{} "; char final estático público C_BACKSLASH = '\\'; char final estático público C_DELIM_START = '{'; char final estático público C_DELIM_END = '}'; /** * cadena de formato<br> * Este método simplemente convierte Los marcadores de posición {} se reemplazan con parámetros en orden<br> * Si desea generar {}, use \\escape {, si desea generar \ antes de {}, use el carácter de doble escape \\\\<br> * Ejemplo:<br> * De uso común: formato("este es {} para {}", "a","b") -> esto es a para b<br> * Escape {}: formato("esto es \\{} para {}", "a","b") -> esto es \{} para un<br> \\ \\{} para {}", "a", "b") -> esto es \a para b<br> * * @param strPattern plantilla de cadena * @param argArray lista de parámetros * @return resultado */ public static String formato(final String strPattern, objeto final... argArray) { if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) { return strPattern; } final int strPatternLength = strPattern.length(); // Inicializa la longitud definida para un mejor rendimiento StringBuilder sbuf = new StringBuilder(strPatternLength + 50); int HandledPosition = 0; int delimIndex; // Ubicación del marcador de posición for (int argIndex = 0; argIndex < argArray.length; argIndex++) { delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition); if (delimIndex == -1) { if (handledPosition == 0) { return strPattern; } else { // La parte restante de la plantilla de cadena ya no contiene marcadores de posición y el resultado se devuelve después de agregar la parte restante sbuf.append(strPattern, handledPosition, strPatternLength); return sbuf.toString(); } } else { if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) { if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) { // Hay un carácter de escape antes del carácter de escape, el marcador de posición sigue siendo válido sbuf.append(strPattern, handledPosition, delimIndex - 1); sbuf.append(Convert.utf8Str(argArray[argIndex])); handledPosition = delimIndex + 2; } else { // El marcador de posición se convierte Definición argIndex --; sbuf.append(strPattern, handledPosition, delimIndex - 1); sbuf.append(C_DELIM_START); handledPosition = delimIndex + 1; } } else { // marcador de posición normal sbuf.append(strPattern, handledPosition, delimIndex); sbuf.append (Convertir .utf8Str(argArray[argIndex])); handledPosition = delimIndex + 2; } } } //Agrega todos los caracteres después del último marcador de posición sbuf.append(strPattern, handledPosition, strPattern.length()); return sbuf.toString(); } // Caso, plantilla de cadena: "esto es {} para {}", {} es un símbolo de marcador de posición, "a", "b" son los datos que se reemplazarán, el resultado es a para b public static void main ( String[] args) { Formato de cadena = StrFormatter.format( "esto es {} para {}", "a", "b"); System.out.println(formato); } }
Clase de herramienta de plantilla de cadena: StrFormatter
Supongo que te gusta
Origin blog.csdn.net/snowing1997/article/details/131719919
Recomendado
Clasificación