una texto pasar palabras matriz llenar letras guardar convertir con cadena arreglo array java guava apache-commons

texto - pasar cadena a array java



Java: agregar citas a cadenas en una matriz y unir cadenas en una matriz (7)

Con Java 8+

Java 8 tiene Collectors.joining() y sus sobrecargas. También tiene String.join .

Usando un Stream y un Collector

Con una función reutilizable.

Function<String,String> addQuotes = s -> "/"" + s + "/""; String result = listOfStrings.stream() .map(addQuotes) .collect(Collectors.joining(", "));

Sin ninguna función reutilizable.

String result = listOfStrings.stream() .map(s -> "/"" + s + "/"") .collect(Collectors.joining(", "));

Más corto (aunque un poco hackish)

String result = listOfStrings.stream() .collect(Collectors.joining("/", /"", "/"", "/""));

Usando String.join

Muy hackish. No utilice excepto en un método llamado wrapWithQuotesAndJoin .

String result = listOfString.isEmpty() ? "" : "/"" + String.join("/", /"", listOfStrings) + "/"";

Con versiones anteriores de Java.

Hazte un favor y utiliza una biblioteca. Guava viene inmediatamente a la mente.

Usando guayaba

Function<String,String> addQuotes = new Function<String,String>() { @Override public String apply(String s) { return new StringBuilder(s.length()+2).append(''"'').append(s).append(''"'').toString(); } }; String result = Joiner.on(", ").join(Iterables.transform(listOfStrings, addQuotes));

No bibliotecas

String result; if (listOfStrings.isEmpty()) { result = ""; } else { StringBuilder sb = new StringBuilder(); Iterator<String> it = listOfStrings.iterator(); sb.append(''"'').append(it.next()).append(''"''); // Not empty while (it.hasNext()) { sb.append(", /"").append(it.next()).append(''"''); } result = sb.toString(); }

Nota : todas las soluciones suponen que listOfStrings es una List<String> lugar de una String[] . Puede convertir una String[] en una List<String> usando Arrays.asList(arrayOfStrings) . Puede obtener un Stream<String> directamente de una String[] usando Arrays.stream(arrayOfString) .

Me gustaría añadir comillas dobles a las cadenas en una matriz y luego unirlas como una sola cadena (conservando las comillas). ¿Hay alguna biblioteca de cadenas que hace esto? He probado Apache commons StringUtils.join y la clase Joiner en Google guava pero no pude encontrar nada que agregue comillas dobles.

Mi entrada sería una matriz como se menciona a continuación:

String [] listOfStrings = {"day", "campaign", "imps", "conversions"};

La salida requerida debe ser como se menciona a continuación:

String output = "/"day/", /"campaign/", /"imps/", /"conversions/"";

Sé que puedo recorrer la matriz y añadir citas. Pero me gustaría una solución más limpia si hay una.


Agregue las comillas junto con el separador y luego agregue las comillas al frente y atrás.

"/"" + Joiner.on("/",/"").join(values) + "/""


No hay ningún método presente en JDK que pueda hacer esto, pero puede usar la clase StringUtls Apache Commons Langs , StringUtils.join() funcionará


También puedes crear el código para esta funcionalidad:

String output = ""; for (int i = 0; i < listOfStrings.length; i++) { listOfStrings[i] = "/"" + listOfStrings[i] + "/""; output += listOfStrings[i] + ", "; }


Una forma más genérica sería algo. me gusta:

private static class QuoteFunction<F> { char quote; public QuoteFunction(char quote) { super(); this.quote = quote; } Function<F, String> func = new Function<F,String>() { @Override public String apply(F s) { return new StringBuilder(s.toString().length()+2).append(quote).append(s).append(quote).toString(); } }; public Function<F, String> getFunction() { return func; } }

... llámalo a través de la siguiente función

public static <F> String asString(Iterable<F> lst, String delimiter, Character quote) { QuoteFunction<F> quoteFunc = new QuoteFunction<F>(quote); Joiner joiner = Joiner.on(delimiter).skipNulls(); return joiner.join(Iterables.transform(lst, quoteFunc.getFunction())); }


String output = "/"" + StringUtils.join(listOfStrings , "/",/"") + "/"";


public static void main(String[] args) { // TODO code application logic here String [] listOfStrings = {"day", "campaign", "imps", "conversions"}; String output = ""; for (int i = 0; i < listOfStrings.length; i++) { output += "/"" + listOfStrings[i] + "/""; if (i != listOfStrings.length - 1) { output += ", "; } } System.out.println(output); }

Salida: "día", "campaña", "imps", "conversiones"