2016-06-03 28 views
5
String string = "3 5 3 -4 2 3 "; 

voglio usare split() qui, ma ho bisogno di un separatore di essere -4. Non so quali numeri sono negativi e ho bisogno di usare split per raggruppare numeri positivi in ​​array separati.Java split(), usare tutta la parola che contiene un carattere specifico come separatore

È possibile?

Edit:

voglio usare:

String[] parts = string.split(????); 

e ricevere

parts[0] = "3 5 3" 
parts[1] = "2 3" 
+0

Qual è 'slice()'? – Tunaki

+0

Intendevo 'split' ovviamente – dddeee

+0

Se dividi lo spazio non dovrebbe importare ... quindi puoi ordinare o usare stream e filtrare per raggruppare gli articoli in base alle condizioni (negativo/positivo ecc.) – alfasin

risposta

7

Da quanto menzionato nei commenti, è possibile utilizzare -\\d+ per la divisione. Trova tutti i posti dove c'è - seguito da un numero qualsiasi di cifre. Siamo in grado di tagliare gli elementi dell'array in seguito, se vogliamo

codice Java

String Str = new String("3 5 3 -4 2 3"); 
String[] x = Str.split("-\\d+"); 

for (String retval: x){ 
    System.out.println(retval.trim()); 
} 

Ideone Demo

0

Uso StringUtils si può fare qualcosa di simile a questa uscita

public static void main(String[] args) { 
    String splitMe="123-457"; 
    String [] newArray=StringUtils.split(splitMe, "-4"); 


    for (String val:newArray){ 
     System.out.println(val.toString()); 
    } 
} 

saranno 123 per il 1 ° in DEX e 57 per il secondo indice

+1

Ho downvoted perché la tua risposta funziona solo per l'* esempio * fornito dall'utente. Non penso che la domanda riguardasse solo la stringa specifica. Altrimenti, sarebbe più veloce creare manualmente due array, uno con "123" e l'altro con "57" ... Inoltre, non vedo la necessità di usare StringUtils al posto dello split di String anche in quel caso. – vefthym

+1

@vefthym Sta dimostrando come viene usato StringUtils - questa risposta è perfettamente valida. Tutto ciò che il richiedente dovrebbe fare è scambiare i parametri. –

+1

@JeremyKato Non sono d'accordo.Per favore, vedi la risposta di rock321987 (http://stackoverflow.com/a/37622489/2516301). Funziona con qualsiasi numero negativo. Potresti aver perso questa parte dell'OP: "Non so quali numeri sono negativi e ho bisogno di usare split per raggruppare numeri positivi in ​​array separati." -4 è solo un esempio – vefthym

2

È possibile utilizzare il metodo replace per la ricerca di una determinata stringa (in questo caso, -4) e sostituirlo con un delimitatore di vostra scelta, forse una linea del tubo-bar (|). Quindi è possibile utilizzare il metodo split e utilizzare il delimitatore ora inserito per dividere l'array.

string = string.replace(replaceString, "|"); 
string[] parts = string.split('|'); 

In effetti si tratta di una piccola rotatoria, ma è veloce, facile e funzionerà.