2009-10-10 10 views

risposta

1

Se si conosce la lunghezza dell'array, si può facilmente effettuare le seguenti operazioni:

String result = s[0] + s[1] +s[2]; 

Un'altra opzione è quella di fare quanto segue, (che è puramente accademica, non voglio usarlo in un reale scenario mondiale in quanto eliminerebbe [, ], e <space> dalle vostre corde):

String result = Arrays.toString(s).replaceAll("[\\]\\[, ]", ""); 

ancora un'altra opzione, di andare avanti con il primo tentativo, ma utilizzando un formattatore C-like:

System.out.println(String.format("%s%s%s", s)); 
+0

Se la lunghezza è di 100? Hai bisogno di un ciclo. – DragonBorn

0
String result = s[0] + s[1] + s[2]; 

Se si dispone di un numero imprecisato di voci, penso che avrete bisogno di un ciclo.

+0

Penso che abbia appena dato un esempio. Cosa succede se l'array viene passato in un metodo? – DragonBorn

+0

Bene, la matrice sa quanto è grande (in Java, comunque) e quindi è possibile eseguire il ciclo. Altrimenti, sfortuna. –

9

Se il non loop è più importante per voi che impedisce di importare un'altra libreria o se si sta utilizzando apache commons lang già, in ogni caso, è possibile utilizzare il metodo StringUtils.join

import org.apache.commons.lang.StringUtils; 
String joined = StringUtils.join(s, ""); 

Forse gli Apache Commons hanno altra metodi che potrebbero essere interessanti anche per il tuo progetto. Li ho trovati per essere una risorsa molto utile per le funzionalità mancanti nelle librerie native Java.

+1

Questo ciclo non si limita alla sua implementazione? –

+0

+1 per non reinventare la ruota. – SingleShot

+3

Ovviamente ci sarà un loop _somewhere! _ –

0

Java non ha un metodo di tipo String.join(). Dovrai tirarne uno tu stesso se vuoi nascondere il loop.

2

Senza di loop, è possibile:

public String joinpart(String[] a, int i, String prefix) { 
    if (i < a.length) { 
     return joinpart(a, i + 1, prefix + a[i]); 
    } 
    return prefix; 
} 

poi:

String[] a = new String[]{"Ap", "p", "le"}; 
String apple = joinpart(a, 0, ""); 

Questo è chiamato un ricorsiva soluzione .

+0

È anche quadratico nella dimensione della stringa risultante. Dovresti aver usato 'StringBuilder' in' joinpart' per costruire la stringa. – JaakkoK

+1

Non penso che sia importante per questo particolare esercizio di apprendimento, quindi non volevo complicare l'implementazione. Ciò oscurerebbe l'essenza della soluzione, che è ciò che è importante qui. –

+0

Buona soluzione. Che dire dell'utilizzo di un generatore di stringhe? Potremmo specificare la capacità e aggiungere un ciclo for anziché utilizzare ricorsivamente. Lo chiedo perché penso che sarebbe più veloce per gli array di dimensioni maggiori. Ho sbagliato? – JCasso

1

utilizzando Dollar è semplice come la digitazione:

String[] array = new String[] { "Ap", "p", "le" }; 
String result = $(array).join(); // result now is "Apple" 
+0

bello !! [:-) –

+2

Ma la domanda riguarda Java, non Javascript. –

Problemi correlati