2013-01-15 19 views
6

Dizede son sözcük dışında bir dizede her kelimeyi almanın en kolay yolu nedir? Şimdiye kadar son sözümü için aşağıdaki kodu kullanıyoruz:Bir dizgeden son sözcük dışında her kelimeyi almanın en kolay yolu

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

Sonra dizesinden son sözü kaldırmak için kaldırma yöntemini kullanarak dize kalanını almak.

Kaldırma yöntemini kullanmak zorunda kalmak istemiyorum, son sözcük ve son boşluk olmadan değişen bir sözcük dizesini elde etmek için yukarıdaki kod kümesine benzer bir yol var mı?

+0

her kelime ayrı bir dize olmak istiyorum, ya tamam geçen kelime ama her şeyi içeren bir dize de kalsın mı? – jlordo

+0

Son sözcüğün dışındaki her kelimenin 1 dizede olmasını istiyorum ve sonra başka bir dizede olmak için son kelimeyi istiyorum. – Digitalwolf

+0

lütfen http://codereview.stackexchange.com adresinde bulunan bu soruları sorunuz ......... daha iyi yanıtlar alabilirsiniz – sunleo

cevap

16

String.substring ile. Örneğin

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

:

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

İade

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

Eğer boşluk ve kullanım alt dize aşağıdaki gibi lastIndexOf alabilir:

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

Bu ne oldu – Digitalwolf

+0

@Digitalwolf için aradığın şey budur :) – PermGenError

+0

Bu sorun değil ama sonda boşluk ekle .... – Banku

4

birlikte yöntemini String.lastIndexOf kullanmayı deneyin:

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

Çıktı: Bunun gibi

 This is a 
     sentence 
3

Ben senin koduna bir satır eklendi, No Bu şekilde ihtiyaçlarını uygun burada

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

kaldırın:

[This, is, a] 
+0

Bazı nedenlerden dolayı: ** [Ljava.lang.String; @ ca0b6 ** regex'i çalıştırdığımda. Herhangi bir fikir? – Digitalwolf

+0

@Digitalwolf 'split' bir dizi döndürdüğünden ve' Ljava.lang.String; @ ca0b6' bir dizi dizenin temsilidir (yani 'myArray.toString()' çağrılırken). Sadece "Arrays.asList (myArray)" işlevini kullanın (örneğin 'Arrays.asList (" Bu bir cümle ".split (" \\ s + [^ \\ s] + $ | \\ s + "))') Sonuçta bir liste daha iyi * gösterime sahip olduğundan (daha * kullanıcı dostu * diyelim ki;;) '). – sp00m

+0

Oh ya, üzgünüm aptal hata = D teşekkürler – 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)); 

} 

}

İlgili konular