2013-01-15 7 views
6

Was ist der einfachste Weg, um jedes Wort in einer anderen Zeichenfolge als das letzte Wort in einer Zeichenfolge zu bekommen? Bis jetzt habe ich den folgenden Code benutzen das letzte Wort zu bekommen:einfachste Weg, um jedes Wort mit Ausnahme des letzten Wortes aus einer Zeichenfolge zu erhalten

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

Und dann immer den Rest den die Saite durch die Remove-Methode mit dem letzten Wort aus dem String zu entfernen.

Ich möchte nicht die remove-Methode verwenden müssen, gibt es eine Möglichkeit ähnlich der oben genannten Code, um die verschiedenen Wörter ohne das letzte Wort und letzte Leerzeichen zu erhalten?

+0

Haben Sie jedes Wort wollen eine separate Zeichenfolge sein, oder ist eine Saite alles, aber das letzte Wort in Ordnung, auch enthalten? – jlordo

+0

Ich möchte, dass jedes Wort außer dem letzten Wort in einer Zeichenfolge und dann das letzte Wort in einer anderen Zeichenfolge ist. – Digitalwolf

+0

bitte fragen Sie diese Q's in http://codereview.stackexchange.com ......... Sie können bessere Antworten bekommen – sunleo

Antwort

16

So:

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

man konnte die lastIndexOf die Leerzeichen und Verwendung String wie unten erhalten:

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

Ausgang:

 This is a 
     sentence 
+0

Danke das ist, was ich gesucht habe – Digitalwolf

+0

@Digitalwolf Sie sind willkommen :) – PermGenError

+0

Das ist ok, aber Leerzeichen im letzten .... – Banku

4

Versuchen Sie, die Methode String.lastIndexOf in Kombination mit mit String.substring.

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

Ich habe eine Zeile Code, entfernen No hier

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

Dieser Ihre Bedürfnisse anzupassen:

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

Zum Beispiel:

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

Returns:

[This, is, a] 
+0

Aus irgendeinem Grund bekomme ich immer: ** [Ljava.lang.String; @ ca0b6 ** wenn ich die Regex starte. Irgendwelche Ideen? – Digitalwolf

+0

@Digitalwolf Weil 'split' ein Array zurückgibt, und' Ljava.lang.String; @ ca0b6' ist die Darstellung eines Arrays von Strings (d. H. Beim Aufruf von 'myArray.toString()'). Verwenden Sie einfach 'Arrays.asList (myArray)' (z. B. 'Arrays.asList (" Dies ist ein Satz ".split (" \\ s + [^ \\ s] + $ | \\ s + "))), um die Ergebnis habe ich zur Verfügung gestellt, da eine Liste eine * bessere * Darstellung hat (* benutzerfreundlicher * sagen wir ';)'). – sp00m

+0

Oh ya, sorry dummer Fehler = D danke – Digitalwolf

1

public class String {

/** 
* @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)); 

} 

}

Verwandte Themen