2010-10-26 7 views
6
में स्थिति से एक स्ट्रिंग को विभाजित करने के

मैं कहीं भी एक जवाब नहीं मिला .. तो मेरे पास है: String s = "How are you"? कैसे कर सकते हैं मैं दो तार में इस विभाजित है, इसलिए पहली स्ट्रिंग 0..s.length()/2 और s.length()/2+1..s.length() से 2 स्ट्रिंग से युक्त?कैसे जावा

धन्यवाद!

+2

यदि लंबाई अजीब है तो क्या होगा? – Fluffy

+0

@roddik: यह देखते हुए कि लंबाई एक int है और 2 एक int है, यह पूर्णांक विभाजन करेगा, जिसके परिणामस्वरूप दूसरी स्ट्रिंग की तुलना में कम पहली स्ट्रिंग होगी। – Powerlord

उत्तर

5

आप उपयोग कर सकते हैं 'सबस्ट्रिंग (प्रारंभ, समाप्ति)', लेकिन निश्चित रूप से जांच करता है, तो स्ट्रिंग नहीं अशक्त से पहले है:

String first = s.substring(0, s.length()/2); 
String second = s.substring(s.length()/2); 

और आप के साथ स्ट्रिंग उम्मीद कर रहे हैं अजीब लंबाई? इस मामले में आपको इस मामले को सही तरीके से संभालने के लिए तर्क जोड़ना होगा।

+0

लेकिन यह भी काम नहीं करता है ... यह देता है '' और '" आप ई "' – aioobe

+0

@Torres, नहीं, कि अनदेखा कर देते हैं मध्यम चरित्र "आप फिर से"। (और खाली स्ट्रिंग पर अपवाद फेंक दें) – aioobe

+1

अलॉइस का जवाब गलत है और Torres भी गलत है। सही उत्तर है 'स्ट्रिंग एस = "आप कैसे हैं?"; स्ट्रिंग पहले = s.substring (0, एस। लम्बाई()/2); स्ट्रिंग दूसरा = s.substring (एस। लम्बाई()/2); ' – Ralph

2

उपयोग String.substring(int), और String.substring(int, int) विधि।

int cutPos = s.length()/2; 
String s1 = s.substring(0, cutPos); 
String s2 = s.substring(cutPos, s.length()); //which is essentially the same as 
//String s2 = s.substring(cutPos); 
+0

आपने गलती की है: substring (startPosition)। इसलिए (cutPos) नहीं-स्ट्रिंग के रूप में ही (0, cutPos) है सबस्ट्रिंग 's.substring (cutPos + 1, s.length()) के बजाय –

+0

;', बेहतर इस्तेमाल 's.substring (cutPos +1),' – Mot

+0

@Yuri Bulkin, धन्यवाद! मैंने अपनी समस्या तय की। –

17

यह करना चाहिए:

String s = "How are you?"; 
String first = s.substring(0, s.length()/2); // gives "How ar" 
String second = s.substring(s.length()/2); // gives "e you?" 
  • String.substring(int i) एक तर्क के साथ स्थिति i

  • String.substring(int i, int j) में शुरुआत सबस्ट्रिंग रिटर्न दो तर्कों i में शुरुआत और समाप्त होने पर सबस्ट्रिंग रिटर्न j-1

(ध्यान दें कि यदि स्ट्रिंग की लंबाई अजीब है, second पूर्णांक प्रभाग में राउंडिंग के कारण first एक से अधिक चरित्र होगा।)

5
String s0 = "How are you?"; 
String s1 = s0.subString(0, s0.length()/2); 
String s2 = s0.subString(s0.length()/2); 

जब तक s0 नहीं है शून्य।

संपादित

इस रूप में आप या तो सूचकांक को 1 जोड़ने नहीं कर रहे हैं अजीब लंबाई स्ट्रिंग्स के लिए काम करेंगे। आश्चर्य की बात है कि यह शून्य लंबाई स्ट्रिंग पर भी काम करता है।

4

यहां एक विधि है जो एक स्ट्रिंग को n लंबाई में विभाजित करती है। (स्ट्रिंग लंबाई बिल्कुल द्वारा n विभाजित नहीं किया जा सकता है, तो अंतिम आइटम कम हो जाएगा।)

public static String[] splitInEqualParts(final String s, final int n){ 
    if(s == null){ 
     return null; 
    } 
    final int strlen = s.length(); 
    if(strlen < n){ 
     // this could be handled differently 
     throw new IllegalArgumentException("String too short"); 
    } 
    final String[] arr = new String[n]; 
    final int tokensize = strlen/n + (strlen % n == 0 ? 0 : 1); 
    for(int i = 0; i < n; i++){ 
     arr[i] = 
      s.substring(i * tokensize, 
       Math.min((i + 1) * tokensize, strlen)); 
    } 
    return arr; 
} 

टेस्ट कोड:

/** 
* Didn't use Arrays.toString() because I wanted to have quotes. 
*/ 
private static void printArray(final String[] arr){ 
    System.out.print("["); 
    boolean first = true; 
    for(final String item : arr){ 
     if(first) first = false; 
     else System.out.print(", "); 
     System.out.print("'" + item + "'"); 
    } 
    System.out.println("]"); 
} 

public static void main(final String[] args){ 

    printArray(splitInEqualParts("Hound dog", 2)); 
    printArray(splitInEqualParts("Love me tender", 3)); 
    printArray(splitInEqualParts("Jailhouse Rock", 4)); 

} 

आउटपुट:

[ 'हाउंड', 'कुत्ता']
[ 'लव', 'मुझे ते' , 'nder']
['जेल', 'हाउस', 'ई रो', 'सीके']

+0

हा, मैं वास्तव में इस के लिए देख रहा था। :) तो आलसी .. धन्यवाद! – milosmns

2

मुझे कहीं भी कोई जवाब नहीं मिला।

पहली जगह आपको हमेशा देखना चाहिए क्लास के लिए javadocs पर: इस मामले में java.lang.String। javadocs

  • (http://download.oracle.com/javase/6/docs/api/ पर जैसे) ओरेकल वेबसाइट पर ऑनलाइन ब्राउज़ किया जा सकता है,
  • किसी भी सूर्य/Oracle जावा एसडीके वितरण में शामिल किए गए हैं,
  • शायद अपने जावा आईडीई में देखा जा सकता है, और
  • और Google खोज का उपयोग करके पाएं।