jeśli mam,Getting wszystkie wartości z tablicy ciągów w jeden ciąg
String[] s = new String[3];
s[0] = "Ap";
s[1] = "p";
s[2] = "le";
String result = ?
Jeśli chcę dostać jabłko z s bez pętli, jak mam to zrobić?
Jakieś krótkie cięcie?
jeśli mam,Getting wszystkie wartości z tablicy ciągów w jeden ciąg
String[] s = new String[3];
s[0] = "Ap";
s[1] = "p";
s[2] = "le";
String result = ?
Jeśli chcę dostać jabłko z s bez pętli, jak mam to zrobić?
Jakieś krótkie cięcie?
Jeśli znasz długość tablicy, można łatwo wykonać następujące czynności:
String result = s[0] + s[1] +s[2];
Inną opcją jest zrobić co następuje, (co jest czysto akademicki, nie będę używać go w rzeczywistym scenariusz świat jak to usunąć [
, ]
i <space>
ze swoimi strunami):
String result = Arrays.toString(s).replaceAll("[\\]\\[, ]", "");
Jeszcze inna opcja, aby przejść wraz z pierwszym podejściem, ale przy użyciu C-like formatowania:
System.out.println(String.format("%s%s%s", s));
String result = s[0] + s[1] + s[2];
Jeśli masz nieznaną liczbę wpisów, myślę, że trzeba pętlę.
Myślę, że właśnie dał przykład. Co się stanie, jeśli tablica zostanie przekazana w metodzie? – DragonBorn
Cóż, tablica wie, jak duży jest (na przykład w Javie), a następnie można zapętlić. W przeciwnym razie, trudno. –
Jeśli nie pętli jest dla ciebie ważniejsze niż zapobieganie importować innej biblioteki lub jeśli używasz apache commons lang już, w każdym razie, można użyć metody StringUtils.join
import org.apache.commons.lang.StringUtils;
String joined = StringUtils.join(s, "");
Może Commons Apache mieć inne metody, które mogą być interesujące dla twojego projektu. Znalazłem je jako bardzo przydatne źródło brakujących funkcji w natywnych bibliotekach Java.
Czy to nie jest pętla wewnątrz implementacji? –
+1 za nie ponowne wynalezienie koła. – SingleShot
Oczywiście nie będzie pętli _somhere! _ –
Java nie ma metody typu String.join()
. Musisz sam rzucić się, jeśli chcesz ukryć pętlę.
Bez pętli, można:
public String joinpart(String[] a, int i, String prefix) {
if (i < a.length) {
return joinpart(a, i + 1, prefix + a[i]);
}
return prefix;
}
następnie:
String[] a = new String[]{"Ap", "p", "le"};
String apple = joinpart(a, 0, "");
To się nazywa rekurencyjne rozwiązanie.
Jest również kwadratowa w rozmiarze wynikowego łańcucha. Powinieneś użyć 'StringBuilder' w' joinpart' do skonstruowania łańcucha. – JaakkoK
Nie sądzę, że będzie to miało znaczenie dla tego konkretnego ćwiczenia, więc nie chciałem komplikować implementacji. To przesłaniałoby istotę rozwiązania, które jest tutaj ważne. –
Dobre rozwiązanie. A co z używaniem kreatora ciągów? Możemy określić pojemność i dołączyć do pętli for zamiast używać rekursywnego. Pytam o to, ponieważ myślę, że byłoby to szybsze dla macierzy o większych rozmiarach. Czy się mylę? – JCasso
użyciu Dollar jest proste jak wpisanie:
String[] array = new String[] { "Ap", "p", "le" };
String result = $(array).join(); // result now is "Apple"
ładny! [:-) –
Ale pytanie dotyczy Java, a nie JavaScript. –
Jeżeli długość wynosi 100? Potrzebujesz pętli. – DragonBorn