grabfocus - obtener posicion del mouse java
Java generando cadenas con marcadores de posiciĆ³n (6)
Hay dos soluciones:
Formatter
es más reciente a pesar de que toma el control de printf()
que tiene 40 años ...
Su marcador de posición como lo define actualmente es un MessageFormat
puede usar, pero ¿por qué usar una técnica antigua? ;) Utilizar Formatter
.
¡Hay más razones para usar el Formatter
que no necesita escapar de comillas simples! MessageFormat
requiere que lo hagas. Además, Formatter
tiene un acceso directo a través de String.format()
para generar cadenas, y PrintWriter
s tiene .printf()
(que incluye System.out
y System.err
que son PrintWriter
s por defecto)
Estoy buscando algo para lograr lo siguiente:
String s = "hello {}!";
s = generate(s, new Object[]{ "world" });
assertEquals(s, "hello world!"); // should be true
Podría escribirlo yo mismo, pero me parece que una vez vi una biblioteca que hizo esto, probablemente fue el registrador slf4j, pero no quiero escribir mensajes de registro. Solo quiero generar cadenas.
¿Sabes de una biblioteca que hace esto?
No necesitarás una biblioteca; Si está utilizando una versión reciente de Java, eche un vistazo a String.format
:
String.format("Hello %s!", "world");
Si puede cambiar el formato de su marcador de posición, puede usar String.format()
. Si no, también podría reemplazarlo como pre-procesamiento.
String.format("hello %s!", "world");
Más información en este otro hilo .
Si puede tolerar un tipo diferente de marcador de posición (es decir, %s
en lugar de {}
), puede usar el método String.format
para eso:
String s = "hello %s!";
s = String.format(s, "world" );
assertEquals(s, "hello world!"); // true
Ver el método String.format
.
String s = "hello %s!";
s = String.format(s, "world");
assertEquals(s, "hello world!"); // should be true
StrSubstitutor
de Apache Commons Lang se puede usar para el formato de cadenas con marcadores de posición nombrados:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.1</version>
</dependency>
Sustituye variables dentro de una cadena por valores.
Esta clase toma un pedazo de texto y sustituye todas las variables dentro de ella. La definición predeterminada de una variable es $ {variableName}. El prefijo y el sufijo se pueden cambiar a través de constructores y métodos establecidos.
Los valores de las variables normalmente se resuelven desde un mapa, pero también se pueden resolver desde las propiedades del sistema o suministrando una resolución de variable personalizada.
Ejemplo:
String template = "Hi ${name}! Your number is ${number}";
Map<String, String> data = new HashMap<String, String>();
data.put("name", "John");
data.put("number", "1");
String formattedString = StrSubstitutor.replace(template, data);