Voici ce que j'ai trouvé. Il existe plusieurs façons de le faire et elles dépendent des outils que vous utilisez.
En utilisant StringUtils
et ArrayUtils
de Common Lang:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = StringUtils.join(ArrayUtils.toObject(arr), " - ");
Vous ne pouvez pas simplement utiliser StringUtils.join(arr, " - ");
parce StringUtils
n'a pas cette version surchargée de la méthode. Cependant, il a la méthode StringUtils.join(int[], char)
.
Fonctionne avec n'importe quelle version Java, à partir de la version 1.2.
Utilisation de Java 8 flux:
Quelque chose comme ceci:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = Arrays.stream(arr)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" - "));
En fait, il y a beaucoup de variations à ACHIVE le résultat en utilisant des flux.
La méthode String.join()
de Java 8 fonctionne uniquement avec des chaînes de caractères, donc pour l'utiliser, vous devez toujours convertir int[]
en String[]
.
String[] sarr = Arrays.stream(arr).mapToObj(String::valueOf).toArray(String[]::new);
String result = String.join(" - ", sarr);
Si vous coincé avec Java 7 ou plus tôt sans bibliothèques, vous pouvez écrire votre propre méthode utilitaire:
public static String myJoin(int[] arr, String separator) {
if (null == arr || 0 == arr.length) return "";
StringBuilder sb = new StringBuilder(256);
sb.append(arr[0]);
//if (arr.length == 1) return sb.toString();
for (int i = 1; i < arr.length; i++) sb.append(separator).append(arr[i]);
return sb.toString();
}
Que vous pouvez faire:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = myJoin(arr, " - ");
Vous pouvez '.collect (Collectors.joining (", "))' à la place du tableau de chaînes temp. – shmosel
Belle vue d'ensemble! Pour la version java 1.7: Techniquement, vous n'avez pas besoin de la vérification arr.length == 1 avant la boucle, mais cela fonctionne parfaitement. – n247s
@shmosel, non. 'Arrays.stream (arr)' produit un 'IntStream' et il n'y a pas de telle méthode' collect() '. – spirit