2013-01-15 11 views
6

से अंतिम शब्द को छोड़कर प्रत्येक शब्द प्राप्त करने का सबसे आसान तरीका स्ट्रिंग में अंतिम शब्द के अलावा स्ट्रिंग में प्रत्येक शब्द को पाने का सबसे आसान तरीका क्या है? अब तक मैं अंतिम शब्द पाने के लिए निम्नलिखित कोड का उपयोग किया गया:स्ट्रिंग

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

और फिर निकालें विधि का उपयोग कर स्ट्रिंग से अंतिम शब्द को दूर करने के द्वारा स्ट्रिंग के बाकी रही।

मैं हटाने की विधि का उपयोग नहीं करना चाहता, क्या अंतिम शब्द और अंतिम स्थान के बिना शब्दों की एक अलग स्ट्रिंग प्राप्त करने के लिए कोड के उपरोक्त सेट के समान कोई तरीका है?

+0

आप प्रत्येक शब्द एक अलग स्ट्रिंग होना चाहते हैं, या एक लेकिन अंतिम शब्द ठीक सब कुछ युक्त स्ट्रिंग, भी है? – jlordo

+0

मैं अंतिम शब्द के अलावा प्रत्येक शब्द को 1 स्ट्रिंग में रखना चाहता हूं, और फिर अंतिम शब्द दूसरे स्ट्रिंग में होना चाहता हूं। – Digitalwolf

+0

कृपया इस तरह के प्रश्न पूछें http://codereview.stackexchange.com ......... आपको बेहतर उत्तर मिल सकते हैं – sunleo

उत्तर

16
इस तरह

String.substring के साथ।

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

आप lastIndexOf नीचे की तरह खाली स्थान के और उपयोग-स्ट्रिंग मिल सकता है:

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

आउटपुट:

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

की तरह कुछ धन्यवाद मैं – Digitalwolf

+0

@ डिजीटलवॉल्फ का स्वागत कर रहा हूं :) – PermGenError

+0

यह ठीक है लेकिन आखिर में व्हाइटस्पेस जोड़ें .... – Banku

4

संयोजन में विधि String.lastIndexOf उपयोग करके देखें:

 This is a 
     sentence 
3

मैं अपने कोड में एक लाइन कहा, कोई यहाँ

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

को दूर यह आपकी आवश्यकताओं के अनुरूप होगा:

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

उदाहरण के लिए:

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

रिटर्न:

[This, is, a] 
+0

किसी कारण से मैं प्राप्त करता रहता हूं: ** [Ljava.lang.String; @ ca0b6 ** जब मैं रेगेक्स चलाता हूं। कोई विचार? – Digitalwolf

+0

@ डिजीटलवॉल्फ क्योंकि 'स्प्लिट' एक सरणी देता है, और 'Ljava.lang.String; @ ca0b6' तारों की एक सरणी का प्रतिनिधित्व है (यानी' myArray.toString() 'को कॉल करते समय)। बस 'Arrays.asList (myArray)' का उपयोग करें (उदाहरण के लिए 'Arrays.asList ("यह एक वाक्य है" .split ("\\ s + [^ \\ s] + $ | \\ s +")) ') नतीजतन मैंने प्रदान किया, चूंकि एक सूची में * बेहतर * प्रतिनिधित्व है (अधिक * उपयोगकर्ता के अनुकूल * चलो कहें ';) ')। – sp00m

+0

ओह या, क्षमा करें मूर्खतापूर्ण गलती = डी धन्यवाद – Digitalwolf

1

सार्वजनिक वर्ग 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)); 

} 

}