En realidad, no hay contenido técnico, porque no puedo recordarlo, así que lo grabaré en este artículo.
Por lo general, hay muchos mensajes SMS en nuestro sistema de aplicaciones, o mensajes de empuje, etc., pero estos mensajes tienen la misma comunidad, como simplemente cambiar el nombre de usuario.
Al igual que el de abajo, excepto la fuente roja, el resto es el mismo.
Estimados clientes: Su cuenta Alipay 110 **** 11 préstamo comercial en línea contratado debe reenviarse 1999.99 Yuan el 2018-06-10. El sistema deducirá automáticamente el saldo de la cuenta Alipay, Bound Savings Card, Yu'ebebao, su cuenta de liquidación bancaria de anuncios y Yu'ebao (si lo hay) el 2018-06-10. Debido al límite limitado en el reembolso del préstamo de la carta de saldo y el ahorro, tenga prioridad para garantizar que el saldo de Yu'ebao, la cuenta de liquidación bancaria de anuncios y Yu'ebao sean suficientes. (Si ya ha pagado, ignore esta información) [Banco Anti-Comercio]
Diferentes estudiantes pueden tener diferentes soluciones. Aquí están mis soluciones para su referencia. Por supuesto, si hay una mejor solución, puede compartirla ~
Solución 1: modo codificado
Se puede codificar en el código o leer en el archivo de configuración. Los estudiantes que tienen experiencia en codificación deben escribir
Ventajas: el contenido del mensaje es intuitivo y el contenido del mensaje de texto puede modificarse directamente en el código
Desventajas: el código es redundante y no conciso, y la codificación dura hace que el servidor se reinicie debido a la necesidad inevitable de modificar el contenido del mensaje.
Solución 2: almacenar en la base de datos
Almacene las plantillas de mensajes comunes en el servidor y lea y analice directamente desde la base de datos cuando sea necesario.
Se cree que el análisis después de la lectura es mil personas y métodos, cada uno con sus propias soluciones y cada una con sus propias ventajas y desventajas.
Aquí estoy usando el método MessageFormat.format en java.text包, que puede coincidir fácilmente con nuestros mensajes de plantilla.
Introducción al método MessageFormat
MessageFormat se usa para formatear un mensaje, generalmente una cadena, como:
String str = "No soy un {0}, la edad es {1, número, corto}, la altura es {2, número,#.#}";MessageFormat puede formatear dichos mensajes y luego insertar la cadena formateada en la posición apropiada en el patrón, como:
Reemplace {0} en STR con "Pig", {1, número, corto} con el número 8 y {2, número,#.#} Con el número 1.2.
Entonces, lo que obtiene el usuario final es una cadena formateada "No soy un cerdo, la edad es 8, la altura es 1.2".
MessageFormat en sí no está relacionado con la configuración regional, sino con el modo proporcionado por el usuario a MessageFormat y el patrón subformat para los parámetros insertados para generar mensajes adecuados para diferentes locales.
Modo MessageFormat (parte principal):
Formatelemento:
{ArgumentIndex}
{ArgumentIndex, formattype}
{ArgumentIndex, FormatType, FormatStyle}
Formattype:
número
fecha
tiempo
Elección (requiere ChoiceFormat)
Formatstyle:
Corto
medio
largo
lleno
entero
divisa
por ciento
Subformatpatrón
Tome STR como ejemplo, en esta cadena:
1. {0} y {1, número, corto} y {2, número,#.#}; Ambos pertenecen a Formatelement, 0,1,2 son argumentos INDEX.
2. El número en {1, número, corto} pertenece a Formattype, mientras que Short pertenece a FormatStyle.
3.#.#En {1, número,#.#} Pertenece al modo subformat.
Especificar formattype y formatstyle es generar valores de formato de fecha, números de diferentes precisiones, tipos de porcentaje, etc.
Ejemplo:
1. Argumento INDEX debe ser un entero no negativo. Su número no se limita a 10 de 0 a 9. Puede estar compuesto por números de 0 a 9, por lo que puede haber muchos, como:
Cadena pig pig = "{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13}} {14} {15}}}}"; objeto = nuevo Objeto [] {"A", "B", "C", "D", "E", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q"}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor); El resultado final es: ABCDEFGHIJKLMNOPQ
2. Al formatear una cadena, solo dos citas individuales representan una sola cotización, y se omitirá una sola cotización, como:
String Message = "Oh, {0} es 'A' Pig"; Objeto [] array = nuevo objeto [] {"zhangsan"}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor); El resultado final es: oh, ZhangSan is a pig
Agregue citas individuales a la letra A, como:
String Message = "Oh, {0} es '' A '' Pig"; Objeto [] array = nuevo objeto [] {"zhangsan"}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor); El resultado final es: oh, ZhangSan is 'a' pig
3. Las citas individuales mantendrán un personaje o una cadena auténtica.
Por lo tanto, si no hay requisitos especiales, las cotizaciones individuales deben eliminarse antes del formato formal, de lo contrario, se causarán problemas innecesarios, como:
String Message = "Oh, '{0}' es un cerdo"; Objeto [] array = nuevo objeto [] {"zhangsan"}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor);El resultado final es: oh, {0} es 'un cerdo', Zhangsan no se puede mostrar aquí.
Por ejemplo, utilizando el patrón de subformato, hay una cita única adicional:
String Message = "Oh, '{0, número,#.#} Es un cerdo"; Objeto [] array = nuevo objeto [] {new Double (3.1415)}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor); El resultado final es: oh, {0,number,#.#} is 'a' pig。
Si es así, se puede mostrar correctamente.
String Message = "Oh, {0, número,#.#} Es un cerdo"; Objeto [] array = nuevo objeto [] {new Double (3.1415)}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor); El resultado final es: oh, 3.1 is a pig
3. Ya sea que se trate de una cadena citada o una cadena no cotizada, la abrazadera rizada izquierda no es compatible, pero la abrazadera rizada derecha es compatible, como:
String Message = "Oh, {es un cerdo"; Objeto [] array = nuevo objeto [] {"zhangsan"}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor); El resultado final es:异常java.lang.IllegalArgumentException: Unmatched braces in the pattern
La abrazadera adecuada se puede mostrar, como:
String Message = "Oh,} es un cerdo"; Objeto [] array = nuevo objeto [] {"zhangsan"}; Valor de cadena = MessageFormat.Format (Mensaje, Array); System.out.println (valor); El resultado final es: oh, } is a pig
Acerca del método MessageFormat.Format:
Cada vez que se llama al método MessageFormat.Format, se creará una instancia de MessageFormat, que es equivalente a ese MessageFormat solo se usa una vez. El método de formato de la clase MessageFormat es el siguiente:
Formato de cadena estática pública (patrón de cadena, objeto ... argumentos) {MessageFormat temp = new MessageFormat (Pattern); return temp.format (argumentos); }Si desea reutilizar una instancia de MessageFormat, puede usar el siguiente método:
String Message = "Oh, {0} es un cerdo"; MessageFormat MessageFormat = new MessageFormat (mensaje); Objeto [] array = nuevo objeto [] {"zhangsan"}; Valor de cadena = MessageFormat.Format (Array); System.out.println (valor); El resultado final es: oh, ZhangSan is a pig
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.