def repeat(str, n):
return str * n
Si vous souhaitez générer une nouvelle chaîne qui répète le contenu de la chaîne n fois, vous pouvez l'écrire en Python comme dans l'exemple ci-dessus. En d'autres termes, l'opérateur *
a pour fonction de répéter une chaîne de caractères, mais quand il s'agit de réaliser la même chose en Java, je pense que les méthodes suivantes sont souvent définies (contrôle nul etc. réduction).
public static String repeat(String str, int n) {
var sb = new StringBuilder();
while(n-- > 0) sb.append(str);
return sb.toString();
}
C'est vrai que c'est bien, mais c'est dommage que vous puissiez écrire en une seule ligne en Python mais pas en Java (mystère). Je pense donc souvent à la façon d'écrire simplement des chaînes répétitives en Java, mais la première chose à laquelle je pense personnellement est d'utiliser Stream
.
public static String repeat(String str, int n) {
return IntStream.range(0, n).mapToObj(i -> str).collect(Collectors.joining(""));
}
C'est certainement une ligne, mais j'ai l'impression que c'est écrit de manière un peu délicate pour en faire une ligne. Afin de simplifier les choses, j'ai mis au point la méthode suivante en recherchant diverses choses.
public static String repeat(String str, int n) {
return String.join("", Collections.nCopies(n, str));
}
C'est plus court et plus simple. Je n'ai pas envie de faire des choses délicates pour le raccourcir. Puisque Collections.nCopies
génère une liste, je voudrais l'utiliser activement tout en y prêtant attention.
Il n'est pas bon d'utiliser StringUtils.repeat
d'Apache Commons Lang (´ ・ ω ・ `)
Recommended Posts