Clase de herramienta de plantilla de cadena: StrFormatter

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); 
    } 
}

Supongo que te gusta

Origin blog.csdn.net/snowing1997/article/details/131719919
Recomendado
Clasificación