2012-02-14 21 views
21

मैंने इस प्रश्न को हल करने के लिए ऑनलाइन खोज करने की कोशिश की लेकिन मुझे कुछ भी नहीं मिला।जावा: स्ट्रिंग को कई वर्णों से कैसे विभाजित करें?

String text = "how are you?"; 

String[] textArray= text.splitByNumber(4); //this method is what I'm asking 
textArray[0]; //it contains "how " 
textArray[1]; //it contains "are " 
textArray[2]; //it contains "you?" 

विधि splitByNumber स्ट्रिंग "पाठ" हर 4 अक्षर विभाजन:

मैं मैं क्या पूछ रहा हूँ समझाने के लिए निम्नलिखित सार कोड लिखा था। मैं इस विधि को कैसे बना सकता हूं ??

कई धन्यवाद

+0

देखें जिज्ञासा से बाहर, क्या इस के लिए आपके उपयोग के मामले है? – Marcelo

+0

http://stackoverflow.com/questions/2297347/splitting-a-string-at-every-n-th-character –

+0

संभावित डुप्लिकेट [जावा में बराबर लंबाई सबस्ट्रिंग के लिए स्प्लिट स्ट्रिंग का संभावित डुप्लिकेट] (https: // stackoverflow.com/questions/3760152/split-string-to-equal-length-substrings-in-java) – Rumid

उत्तर

43

मुझे लगता है कि वह क्या चाहता है आकार 4. की सबस्ट्रिंग में एक स्ट्रिंग विभाजन के लिए तो मैं एक पाश में इस करना होगा:

List<String> strings = new ArrayList<String>(); 
int index = 0; 
while (index < text.length()) { 
    strings.add(text.substring(index, Math.min(index + 4,text.length()))); 
    index += 4; 
} 
3

इस

String text = "how are you?"; 
    String array[] = text.split(" "); 

प्रयास करें या आप

List<String> list= new ArrayList<String>(); 
int index = 0; 
while (index<text.length()) { 
    list.add(text.substring(index, Math.min(index+4,text.length())); 
    index=index+4; 
} 
24

नीचे में उपयोग कर सकते Guava का उपयोग करना:

Iterable<String> result = Splitter.fixedLength(4).split("how are you?"); 
String[] parts = Iterables.toArray(result, String.class); 
2

मैं वहाँ एक आउट-ऑफ-द-बॉक्स समाधान नहीं लगता है, लेकिन मैं कुछ ऐसा करना चाहते हैं इस:

private String[] splitByNumber(String s, int chunkSize){ 
    int chunkCount = (s.length()/chunkSize) + (s.length() % chunkSize == 0 ? 0 : 1); 
    String[] returnVal = new String[chunkCount]; 
    for(int i=0;i<chunkCount;i++){ 
     returnVal[i] = s.substring(i*chunkSize, Math.min((i+1)*chunkSize-1, s.length()); 
    } 
    return returnVal; 
} 

प्रयोग होगा:

String[] textArray = splitByNumber(text, 4); 

संपादित करें:-स्ट्रिंग वास्तव में स्ट्रिंग की लंबाई को पार नहीं करना चाहिए।

+0

उह, एस। लम्बाई() = 9, chunkSize = 4 कहें, आप 2 की सरणी आवंटित करते हैं, यह 3 होना चाहिए – st0le

+0

आप सही हैं, मैंने इसे ठीक किया है। जैसा कि मैंने पहले सोचा था उतना सुरुचिपूर्ण नहीं है: / – Gilthans

1

यह आसान समाधान मैं बंद सोच सकता है .. सरल जावा पुरातन और छोरों का उपयोग करने की कोशिश इस

public static String[] splitString(String str) { 
    if(str == null) return null; 

    List<String> list = new ArrayList<String>(); 
    for(int i=0;i < str.length();i=i+4){ 
     int endindex = Math.min(i+4,str.length()); 
     list.add(str.substring(i, endindex)); 
    } 
    return list.toArray(new String[list.size()]); 
} 
3

त्वरित हैक

private String[] splitByNumber(String s, int size) { 
    if(s == null || size <= 0) 
     return null; 
    int chunks = s.length()/size + ((s.length() % size > 0) ? 1 : 0); 
    String[] arr = new String[chunks]; 
    for(int i = 0, j = 0, l = s.length(); i < l; i += size, j++) 
     arr[j] = s.substring(i, Math.min(l, i + size)); 
    return arr; 
} 
3

private static String[] splitByNumber(String text, int number) { 

     int inLength = text.length(); 
     int arLength = inLength/number; 
     int left=inLength%number; 
     if(left>0){++arLength;} 
     String ar[] = new String[arLength]; 
      String tempText=text; 
      for (int x = 0; x < arLength; ++x) { 

       if(tempText.length()>number){ 
       ar[x]=tempText.substring(0, number); 
       tempText=tempText.substring(number); 
       }else{ 
        ar[x]=tempText; 
       } 

      } 


     return ar; 
    } 

उपयोग: String ar[]=splitByNumber("nalaka", 2);