किसी भी व्हाट्सएप चार्ट के साथ स्ट्रिंग को सीमांकक के रूप में कैसे विभाजित किया जाए


555

क्या regex पैटर्न के लिए पारित करने के लिए मैं की आवश्यकता होगी java.lang.String.split() सभी खाली स्थान के वर्ण (का उपयोग कर सबस्ट्रिंग एक सरणी में एक स्ट्रिंग को विभाजित करने ' ', '\t', '\n'डिलीमीटर के रूप में, आदि)?

जवाबों:


955

की लाइनों में कुछ

myString.split("\\s+");

यह सभी सफेद स्थानों को एक सीमांकक के रूप में समूहित करता है।

तो अगर मैं स्ट्रिंग है:

"Hello[space][tab]World"

यह तार उपज चाहिए "Hello"और "World"और के बीच खाली जगह को छोड़ देते हैं [space]और [tab]

VonC के रूप में बताया, बैकस्लैश, भाग निकले जाना चाहिए, क्योंकि जावा पहले विशेष वर्ण स्ट्रिंग भागने की कोशिश करते हैं, और भेज कि पार्स किया जा सकता। आप जो चाहते हैं, वह शाब्दिक है "\s", जिसका अर्थ है, आपको पास होने की आवश्यकता है "\\s"। यह थोड़ा भ्रमित कर सकता है।

के \\sबराबर है [ \\t\\n\\x0B\\f\\r]


1
उस अनुस्मारक के लिए धन्यवाद। मैं सिर्फ कूल्हे से कोडिंग कर रहा था :)
हेनरिक पॉल

34
ध्यान दें कि आपको trim()पहले की जरूरत है : trim().split("\\s++")- अन्यथा, उदाहरण के लिए `abc` को विभाजित करना पहले दो खाली तारों का उत्सर्जन करेगा।
मार्कस जूनियस ब्रूटस

आपने अपने उत्तर के अंत में चार बैकस्लैश का उपयोग क्यों किया? अर्थात। "\\\\s"?
माइकल बोर्कोवस्की

"" .trim ()। स्प्लिट ("\\ s +") - खाली स्ट्रिंग स्प्लिट आपको 1. "टर्म" की लंबाई देता है। () (स्प्लिट ("\\ s +") - आपको 1 की लंबाई भी देता है। ।
पॉल 13

88

अधिकांश रीजेक्स बोलियों में सुविधाजनक चरित्र सारांश हैं जो आप इस तरह की चीज़ों के लिए उपयोग कर सकते हैं - ये याद रखने के लिए अच्छे हैं:

\w - किसी भी शब्द चरित्र से मेल खाता है।

\W - किसी भी नॉनवर्ड कैरेक्टर से मेल खाता है।

\s - किसी भी सफेद-अंतरिक्ष चरित्र से मेल खाता है।

\S - कुछ भी लेकिन सफेद-अंतरिक्ष वर्णों से मेल खाता है।

\d - किसी भी अंक से मेल खाता है।

\D - अंकों के अलावा कुछ भी मेल खाता है।

"रेगेक्स चेचेट" के लिए एक खोज आपको बहुत सारे उपयोगी सारांश के साथ पुरस्कृत करना चाहिए।



पढ़ें पैटर्न वर्ग JavaDoc: docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
क्रिस्टोफ

64

जावास्क्रिप्ट में यह काम पाने के लिए , मुझे निम्नलिखित कार्य करने थे:

myString.split(/\s+/g)

15
यह जावास्क्रिप्ट में है। मैं या तो ध्यान नहीं दे रहा था :)
चमत्कार

14
उफ़। मेरी गलती। हो सकता है कि यह उत्तर अभी भी कुछ अन्य लोगों की मदद करेगा जो एक जावास्क्रिप्ट उत्तर की तलाश में इस धागे पर ठोकर खाते हैं। :-)
माइक मैनार्ड

हाहा मैं जावास्क्रिप्ट के लिए एक जवाब की तलाश में था, अकस्मात इस सवाल पर आया और फिर मैंने आपके जाने से पहले आपके उत्तर पर गौर किया। +1।
क्रिश

एक दम बढ़िया! मुझे खुशी है कि यह उत्तर किसी के लिए उपयोगी साबित हुआ, भले ही उसने गलत प्रश्न का उत्तर दिया हो। :-)
मिकार्ड

इसने मुझे बहुत मदद की, साथ ही सर्वर आर्ग्स को विभाजित करने की आवश्यकता थी :)
प्रोग्रामर

36

"\\ s +" को ट्रिक करना चाहिए


1
अंत में + क्यों?
फ्लोएला

4
@ एनलरेल इसे कम से कम एक बार स्पेस कैरेक्टर कैप्चर को दोहराता है, और जितनी बार संभव हो: https://regex101.com/r/dT7wG9/1 या http://rick.measham.id.au/paste/explain देखें। pl। regex = \ s% 2B या http://regexper.com/#^s%2B या http://www.myezapp.com/apps/dev/regexp/show.ws?regex=\s+&env= env_java
VonC


10
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

@ स्टेपहान मैंने उन लोगों को नहीं देखा।
तीर

8

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

StringUtils.split("abc def")

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

यह रेगेक्स पैटर्न की तुलना में उपयोग करना आसान हो सकता है।


2

चूँकि यह एक नियमित अभिव्यक्ति है, और मुझे लगता है कि आप भी अल्पविराम, डॉट्स, इत्यादि जैसे गैर-अल्फ़ान्यूमेरिक चार्ट नहीं चाहेंगे, जो कि रिक्त स्थान से घिरा हो (उदाहरण के लिए "एक, दो" [एक] [दो] देना चाहिए) यह होना चाहिए:

myString.split(/[\s\W]+/)

1

आप निम्नलिखित विवरण का उपयोग करके एक स्ट्रिंग को लाइन ब्रेक द्वारा विभाजित कर सकते हैं:

 String textStr[] = yourString.split("\\r?\\n");

आप निम्नलिखित कथन का उपयोग करके व्हाट्सएप द्वारा एक स्ट्रिंग को विभाजित कर सकते हैं:

String textStr[] = yourString.split("\\s+");


-1

इस कोड का अध्ययन करें .. सौभाग्य

    import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");      
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);

        } 
    }
}

क्या आप कृपया अपना उत्तर विस्तृत कर सकते हैं?
Stephan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.