def repeat(str, n):
return str * n
Wenn Sie eine neue Zeichenfolge generieren möchten, die den Inhalt der Zeichenfolge n-mal wiederholt, können Sie sie wie im obigen Beispiel in Python schreiben. Mit anderen Worten, der Operator *
hat die Funktion, Zeichenketten zu wiederholen, aber wenn es darum geht, dasselbe in Java zu realisieren, denke ich, dass die folgenden Methoden häufig definiert sind (Nullprüfung usw.). Kürzung).
public static String repeat(String str, int n) {
var sb = new StringBuilder();
while(n-- > 0) sb.append(str);
return sb.toString();
}
Es ist wahr, dass dies in Ordnung ist, aber es ist eine Schande, dass Sie in Python in einer Zeile schreiben können, aber nicht in Java (Mystery). Daher denke ich oft darüber nach, wie man einfach sich wiederholende Zeichenfolgen in Java schreibt, aber das erste, woran ich persönlich denke, ist die Verwendung von "Stream".
public static String repeat(String str, int n) {
return IntStream.range(0, n).mapToObj(i -> str).collect(Collectors.joining(""));
}
Es ist sicherlich eine Zeile, aber ich habe den Eindruck, dass es etwas knifflig geschrieben ist, um es zu einer Zeile zu machen. Um es einfacher zu machen, habe ich mir bei der Untersuchung verschiedener Dinge die folgende Methode ausgedacht.
public static String repeat(String str, int n) {
return String.join("", Collections.nCopies(n, str));
}
Es ist kürzer und einfacher. Ich habe keine Lust, knifflige Dinge zu tun, um es kürzer zu machen. Da Collections.nCopies
eine Liste generiert, möchte ich diese aktiv nutzen und dabei darauf achten.
Es ist nicht gut, StringUtils.repeat
von Apache Commons Lang (´ ・ ω ・ `) zu verwenden.
Recommended Posts