अंतरिक्ष द्वारा एक स्ट्रिंग को कैसे विभाजित किया जाए


329

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

str = "Hello I'm your String";
String[] splited = str.split(" ");

लेकिन यह काम नहीं करता है।


3
अच्छा लग रहा है ... 'विभाजित' सरणी में क्या मूल्य हैं?
नपंती

1
आपका कोड वास्तव में के रूप में काम करता है। IdeOne.com पर कोड रन लाइव देखें ।
तुलसी बोर्क

@BasilBourque - मुझे उस लिंक पर कोई रन बटन नहीं मिल रहा है
नैनोसॉफ्ट

1
@nanosoft IdeOne.com पर पेज लोड होने पर स्वचालित रूप से चलता है। कोड के नीचे आउटपुट देखें, stdout अनुभाग में। कोड बदलने के लिए, forkऊपरी बाएं कोने के पास स्थित लिंक पर क्लिक करें ।
तुलसी बॉर्क

जवाबों:


639

आपके पास क्या काम होना चाहिए। यदि, हालांकि, उपलब्ध कराए गए स्थान ... कुछ और करने के लिए डिफ़ॉल्ट हैं? आप व्हॉट्सएप regex का उपयोग कर सकते हैं:

str = "Hello I'm your String";
String[] splited = str.split("\\s+");

यह आपके स्ट्रिंग को टोकन में विभाजित करने के लिए लगातार रिक्त स्थान की किसी भी संख्या का कारण होगा।

एक साइड नोट के रूप में, मुझे यकीन नहीं है कि "विभाजन" एक शब्द है :) मेरा मानना ​​है कि विभाजन का शिकार होने की स्थिति भी "विभाजन" है। यह उन मुश्किल व्याकरण चीजों में से एक है :-) अचार होने की कोशिश नहीं कर रहा है, बस मुझे लगा कि मैं इसे पास कर दूंगा!


45
मैं स्विस हूँ जो आप उम्मीद करते थे, मेरी अंग्रेजी सबसे अच्छी नहीं है? पी, वैसे भी यह काम किया!
सफारी

29
:-) अरे यह कोई बड़ी बात नहीं है। मैंने कुछ हास्यास्पद चर नामों का उपयोग किया है (कोड में मुझे शायद जीने नहीं देना चाहिए!) मैं एक व्याकरण नाज़ी या कुछ भी बनने की कोशिश नहीं कर रहा था, बस थोड़ा मामूली बात पर गुजर रहा था, बस।
corsiKa

7
@ सफ़ारी, आपको सिर्फ 1 की कीमत में 2 बेहतरीन सलाह मिली हैं। बहुत बढ़िया जवाब।
निर्मल मंगल

8
"आपके पास क्या काम होना चाहिए" मैं ऐसा ही कुछ कहता हूं जब मेरा कोड टूट जाता है।
ग्रिफिन

1
मुझे यह उपयोगी लगता है क्योंकि मेरा उपयोग मामला स्ट्रिंग को विभाजित करने और कई स्थानों को हटाने के लिए था। कोड की एक पंक्ति मेरे लिए दोनों करती है।
निहारिका उपाध्याय

86

जबकि स्वीकृत उत्तर अच्छा है, इस बात से अवगत रहें कि यदि आपका इनपुट स्ट्रिंग एक सफेद स्थान से शुरू होता है, तो आप एक अग्रणी रिक्त स्ट्रिंग के साथ समाप्त हो जाएंगे। उदाहरण के लिए, साथ:

String str = " Hello I'm your String";
String[] splitStr = str.split("\\s+");

परिणाम होगा:

splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";

तो आप इसे विभाजित करने से पहले अपनी स्ट्रिंग को ट्रिम करना चाहते हैं:

String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");

29

मेरा मानना ​​है कि str.split कोष्ठक में एक नियमित अभिव्यक्ति डालने से समस्या का समाधान होना चाहिए। Java String.split () विधि नियमित अभिव्यक्तियों पर आधारित है इसलिए आपको क्या चाहिए:

str = "Hello I'm your String";
String[] splitStr = str.split("\\s+");

12

Stringutils.split()सफेद छेद द्वारा स्ट्रिंग को विभाजित करने के लिए उपयोग करें । उदाहरण के लिए StringUtils.split("Hello World")"हेलो" और "वर्ल्ड" रिटर्न;

उल्लिखित मामले को हल करने के लिए हम इस तरह विभाजन विधि का उपयोग करते हैं

String split[]= StringUtils.split("Hello I'm your String");

जब हम विभाजित सरणी को प्रिंट करेंगे तो आउटपुट होगा:

हैलो

मैं हूँ

तुम्हारी

तार

पूर्ण उदाहरण डेमो जाँच के लिए यहाँ



6

अगर किसी तरह आप स्ट्रिंग विभाजन विधि का उपयोग नहीं करना चाहते हैं तो आप जावा में StringTokenizer वर्ग का उपयोग कर सकते हैं ..

    StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
    String[] splited = new String[tokens.countTokens()];
    int index = 0;
    while(tokens.hasMoreTokens()){
        splited[index] = tokens.nextToken();
        ++index;
    }

ArrayIndexOutofBounds अपवाद को फेंकने की संभावना है।
अजय तक

2
नहीं, यह "ArrayIndexOutofBounds" नहीं फेंकेगा क्योंकि मेरे पास स्ट्रिंग की संख्या के अनुसार सरणी आकार की घोषणा है। यह सुनिश्चित करेगा कि सरणियों का आकार एक स्ट्रिंग में प्राप्त टोकन से अधिक नहीं होगा।
मुहम्मद सुलेमान

6

इसको आजमाओ

    String str = "This is String";
    String[] splited = str.split("\\s+");

    String split_one=splited[0];
    String split_second=splited[1];
    String split_three=splited[2];

   Log.d("Splited String ", "Splited String" + split_one+split_second+split_three);

4

एक वैकल्पिक तरीका होगा:

import java.util.regex.Pattern;

...

private static final Pattern SPACE = Pattern.compile(" ");
String[] arr = SPACE.split(str); // str is the string to be split

यहाँ देखा


3

ठीक है, इसलिए हमें बंटवारा करना होगा क्योंकि आपको पहले ही जवाब मिल गया था कि मैं इसे सामान्य कर दूंगा।

यदि आप रिक्त स्थान, सीमांकक (विशेष वर्ण) द्वारा किसी भी स्ट्रिंग को विभाजित करना चाहते हैं।

सबसे पहले, प्रमुख स्थान को हटा दें क्योंकि वे अधिकांश मुद्दे बनाते हैं।

str1 = "    Hello I'm your       String    ";
str2 = "    Are you serious about this question_  boy, aren't you?   ";

पहले अग्रणी स्थान को हटा दें जो स्थान, टैब आदि हो सकता है।

String s = str1.replaceAll("^\\s+","");//starting with whitespace one or more

अब अगर आप अंतरिक्ष या किसी विशेष आकर्षण से विभाजित करना चाहते हैं।

String[] sa = s.split("[^\\w]+");//split by any non word char

लेकिन जैसे कि w में [a-zA-Z_0-9] शामिल है, इसलिए यदि आप अंडरस्कोर (_) द्वारा विभाजित करना चाहते हैं तो भी उपयोग करें

 String[] sa = s.split("[!,? ._'@]+");//for str2 after removing leading space

यही कारण है कि replaceAll("^\\s+","")मेरा दिन बचा लिया। मेरे मामले के लिए काम किया। धन्यवाद
कोस्टास Asargiotakis

2

नीचे बहुत सरल उदाहरण:

आशा है ये मदद करेगा।

String str = "Hello I'm your String";
String[] splited = str.split(" ");
var splited = str.split(" ");
var splited1=splited[0]; //Hello
var splited2=splited[1]; //I'm
var splited3=splited[2]; //your
var splited4=splited[3]; //String

1

आप नीचे दिए गए कोड का उपयोग करके स्ट्रिंग को सीप कर सकते हैं

   String thisString="Hello world";

   String[] parts = theString.split(" ");

   String first = parts[0];//"hello"

    String second = parts[1];//"World"

0

यहां एक स्ट्रिंग को ट्रिम करने की एक विधि है जिसमें "," या सफेद स्थान है

private String shorterName(String s){
        String[] sArr = s.split("\\,|\\s+");
        String output = sArr[0];

        return output;
    }

0

चूंकि इन उत्तरों को पोस्ट किए हुए कुछ समय हो गया है, इसलिए यहां एक और वर्तमान तरीका है जो पूछा जाता है:

List<String> output = new ArrayList<>();
try (Scanner sc = new Scanner(inputString)) {
    while (sc.hasNext()) output.add(sc.next());
}

अब आपके पास स्ट्रिंग्स की एक सूची है (जो किसी सरणी से बेहतर है); यदि आपको एक सरणी की आवश्यकता है, तो आप कर सकते हैंoutput.toArray(new String[0]);


0

न केवल श्वेत स्थान, बल्कि मेरा समाधान अदृश्य पात्रों को भी हल करता है।

str = "Hello I'm your String";
String[] splited = str.split("\p{Z}");

-1

स्पेस द्वारा स्पिट स्ट्रिंग के लिए सरल

    String CurrentString = "First Second Last";
    String[] separated = CurrentString.split(" ");

    for (int i = 0; i < separated.length; i++) {

         if (i == 0) {
             Log.d("FName ** ", "" + separated[0].trim() + "\n ");
         } else if (i == 1) {
             Log.d("MName ** ", "" + separated[1].trim() + "\n ");
         } else if (i == 2) {
             Log.d("LName ** ", "" + separated[2].trim());
         }
     }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.