2013-01-15 12 views
6

Qual è il modo più semplice per ottenere ogni parola in una stringa diversa dall'ultima parola in una stringa? Fino ad ora ho usato il seguente codice per ottenere l'ultima parola:il modo più semplice per ottenere ogni parola tranne l'ultima parola da una stringa

String listOfWords = "This is a sentence"; 
String[] b = listOfWords.split("\\s+"); 
String lastWord = b[b.length - 1]; 

E poi ricevendo il resto della stringa utilizzando il metodo Remove per rimuovere l'ultima parola dalla stringa.

Non voglio usare il metodo remove, esiste un modo simile al set di codice sopra riportato per ottenere una stringa di parole variabile senza l'ultima parola e l'ultimo spazio?

+0

Vuoi ogni parola sia una stringa separata, o è una stringa che contiene tutto, ma l'ultima parola ok, troppo? – jlordo

+0

Voglio che ogni parola diversa dall'ultima parola sia in 1 stringa e quindi l'ultima parola in un'altra stringa. – Digitalwolf

+0

si prega di chiedere questo tipo di Q in http://codereview.stackexchange.com ......... è possibile ottenere risposte migliori – sunleo

risposta

16

Ti piace questa:

String test = "This is a test"; 
    String firstWords = test.substring(0, test.lastIndexOf(" ")); 
    String lastWord = test.substring(test.lastIndexOf(" ") + 1); 
5

si potrebbe ottenere l'lastIndexOf gli spazi e l'utilizzo sottostringa come di seguito:

  String listOfWords = "This is a sentence"; 
     int index= listOfWords.lastIndexOf(" "); 
     System.out.println(listOfWords.substring(0, index)); 
    System.out.println(listOfWords.substring(index+1)); 

uscita:

 This is a 
     sentence 
+0

Grazie questo è quello che stavo cercando – Digitalwolf

+0

@Digitalwolf siete i benvenuti :) – PermGenError

+0

Questo è ok ma aggiungere spazi bianchi negli ultimi .... – Banku

4

provare a utilizzare il metodo di String.lastIndexOf in combinazione con String.substring.

String listOfWords = "This is a sentence"; 
String allButLast = listOfWords.substring(0, listOfWords.lastIndexOf(" ")); 
3

ho aggiunto una riga al codice, non rimuovere qui

String listOfWords = "This is a sentence";  
    String[] b = listOfWords.split("\\s+"); 
    String lastWord = b[b.length - 1]; 
    String rest = listOfWords.substring(0,listOfWords.indexOf(lastWord)).trim(); // Added 
    System.out.println(rest); 
2

Questo soddisfa le tue esigenze:

.split("\\s+[^\\s]+$|\\s+") 

Ad esempio:

"This is a sentence".split("\\s+[^\\s]+$|\\s+"); 

Ritorni:

[This, is, a] 
+0

Per qualche motivo continuo a ricevere: ** [Ljava.lang.String; @ ca0b6 ** quando eseguo la regex. Qualche idea? – Digitalwolf

+0

@Digitalwolf Poiché 'split' restituisce una matrice e' Ljava.lang.String; @ ca0b6' è la rappresentazione di una matrice di stringhe (ad esempio quando si chiama 'myArray.toString()'). Basta usare 'Arrays.asList (myArray)' (es. 'Arrays.asList (" Questa è una frase ".split (" \\ s + [^ \\ s] + $ | \\ s + "))') per ottenere il risultato fornito, poiché una lista ha una rappresentazione * migliore * (più * user-friendly * diciamo ';)'). – sp00m

+0

Oh ya, scusa stupido errore = D grazie – Digitalwolf

1

public class StringArray {

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    String sentense="this is a sentence"; 

    int index=sentense.lastIndexOf(" "); 

    System.out.println(sentense.substring(0,index)); 

} 

}

Problemi correlati