Ich habe so etwas wie die implodierende Funktion von PHP in Java implementiert.
(Ergänzung) Für Java 8 [join](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang. Es scheint eine Funktion namens Iterable-) zu geben. @nishemon Danke für deinen Kommentar!
/**
* Join list elements with a string
*
* @param stringList The list of strings to implode.
* @param glue The String for joining list.
* @return Returns a string containing a string representation of all the list elements
* in the same order, with the glue string between each element.
*/
public static String implode(List<String> stringList, String glue) {
StringBuilder stringBuilder = new StringBuilder();
int index = 0;
int size = stringList.size();
for (String value : stringList) {
stringBuilder.append(value);
if (index < size - 1) {
stringBuilder.append(glue);
}
index++;
}
return stringBuilder.toString();
}
(Ergänzung) Mir wurde eine allgemeine Implementierung beigebracht. @ Shiracamus Vielen Dank für Ihren Kommentar!
public static String implode(Iterable<? extends CharSequence> values, CharSequence glue) {
StringBuilder buffer = new StringBuilder();
CharSequence separator = "";
for (CharSequence value : values) {
buffer.append(separator).append(value);
separator = glue;
}
return buffer.toString();
}
(Ergänzung) Mir wurde die Implementierung erneut beigebracht. @ saka1029 Vielen Dank für Ihren Kommentar!
public static <T> String implode(List<T> list, String glue) {
StringBuilder sb = new StringBuilder();
for (T e : list) {
sb.append(glue).append(e);
}
return sb.substring(glue.length());
}
Derzeit nur eine einfache
@Test
public void testImplode() {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
String glue = " ";
String actual = Util.implode(list, glue);
String expected = "A B C";
assertEquals(expected, actual);
}
implode ()
Im PHP Handbuch heißt es:
Hinweis: implode () kann aus historischen Gründen Argumente in beliebiger Reihenfolge akzeptieren. Unter dem Gesichtspunkt der Konsistenz mit explode () wäre es jedoch weniger verwirrend, die Reihenfolge der in der Dokumentation beschriebenen Argumente zu verwenden.
In PHP ist die Standardeinstellung von "kleber" eine leere Zeichenfolge, diesmal wird sie jedoch nicht berücksichtigt. Wenn Sie dies tun, kann es gut sein, etwas so überladen zu machen.
public static String implode(List<String> stringList) {
return implode(stringList, "");
}
Bitte lassen Sie mich wissen, wenn etwas nicht stimmt oder ein besserer Weg! : bete:
Recommended Posts