दिलचस्प पोस्ट
दो तिथियों के बीच एंड्रॉइड अंतर जावा के साथ आरएआर अभिलेखागार फ़ोल्ड में फ़ाइलों को अनुक्रमिक संख्याओं में नामकरण करना VBScript में एक स्ट्रिंग में उद्धरण जोड़ना सी # के माध्यम से ओरेकल डाटाबेस से कनेक्ट हो रहा है? रूबी-ऑन-रेल: एकाधिक हैमाध्यम से: संभव के माध्यम से? जावास्क्रिप्ट विंडो का आकार बदलना घटना क्या स्वत: पूर्ण = "बंद" सभी आधुनिक ब्राउज़रों के साथ संगत है? CHAR_BIT क्या है? अपस्ट्रीम ने अपस्ट्रीम से प्रतिक्रिया शीर्ष लेख पढ़ते समय बहुत बड़ा शीर्ष भेजा एक समारोह बुला बैकिक्स दो रिपॉजिटरी के बीच का अंतर प्राप्त करना जावा के साथ अंकों की सूची छंटनी .mdf डेटाबेस को अपडेट करने में विफल क्योंकि डेटाबेस केवल पढ़ने योग्य है (Windows अनुप्रयोग) पायथन: एक विशिष्ट इनपुट प्राप्त होने तक एक प्रोग्राम को दोहराते रहें कैसे?

स्ट्रिंग से संख्याओं को निकालने के लिए और ints की एक सरणी कैसे प्राप्त करें?

मेरे पास एक स्ट्रिंग वेरिएबल है (मूल रूप से एक अनिर्दिष्ट संख्या के साथ एक अंग्रेजी वाक्य) और मैं सभी संख्याओं को एक पूर्णांक संख्या में निकालना चाहूंगा मैं सोच रहा था कि क्या नियमित अभिव्यक्ति के साथ एक त्वरित समाधान था?


मैंने शॉन के समाधान का इस्तेमाल किया और इसे थोड़ा बदल दिया:

LinkedList<String> numbers = new LinkedList<String>(); Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher(line); while (m.find()) { numbers.add(m.group()); } 

वेब के समाधान से एकत्रित समाधान "स्ट्रिंग से संख्याओं को निकालने के लिए और ints की एक सरणी कैसे प्राप्त करें?"

 Pattern p = Pattern.compile("-?\\d+"); Matcher m = p.matcher("There are more than -2 and less than 12 numbers here"); while (m.find()) { System.out.println(m.group()); } 

… प्रिंट -2 और 12


-? एक प्रमुख नकारात्मक संकेत से मेल खाता है – वैकल्पिक रूप से \ d एक अंक से मेल खाता है, और हमें \ as \ Java स्ट्रिंग में लिखने की आवश्यकता है। इसलिए, \ d + 1 या अधिक अंकों से मेल खाता है

सभी java.lang.String विधि को replaceAll बारे में क्या है:

  String str = "qwerty-1qwerty-2 455 f0gfg 4"; str = str.replaceAll("[^-?0-9]+", " "); System.out.println(Arrays.asList(str.trim().split(" "))); 

आउटपुट:

 [-1, -2, 455, 0, 4] 

विवरण

 [^-?0-9]+ 
  • + एक और असीमित समय के बीच, यथासंभव कई बार, आवश्यकतानुसार वापस दे
  • -? पात्रों में से एक "-?"
  • 0-9 9 "0" और "9" के बीच की सीमा में एक वर्ण
 Pattern p = Pattern.compile("[0-9]+"); Matcher m = p.matcher(myString); while (m.find()) { int n = Integer.parseInt(m.group()); // append n to list } // convert list to array, etc 

आप वास्तव में [0- 9] को \ d के साथ प्रतिस्थापित कर सकते हैं, लेकिन इसमें डबल बैकस्लैश से बचना शामिल है, जो पढ़ने में कठिन बना देता है

  StringBuffer sBuffer = new StringBuffer(); Pattern p = Pattern.compile("[0-9]+.[0-9]*|[0-9]*.[0-9]+|[0-9]+"); Matcher m = p.matcher(str); while (m.find()) { sBuffer.append(m.group()); } return sBuffer.toString(); 

यह संख्या दशमलव निकालने के लिए है

तर्कसंगत संख्याओं के लिए इसका उपयोग करें: (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+))

स्वीकार किए जाते हैं उत्तर अंकों का पता लगाता है, लेकिन प्रपत्र संख्याओं का पता नहीं लगाता, उदाहरण के लिए 2,000, और न ही दशमलव, जैसे 4.8। इस तरह के उपयोग के लिए -?\\d+(,\\d+)*?\\.?\\d+? :

  Pattern p = Pattern.compile("-?\\d+(,\\d+)*?\\.?\\d+?"); List<String> numbers = new ArrayList<String>(); Matcher m = p.matcher("Government has distributed 4.8 million textbooks to 2,000 schools"); while (m.find()) { numbers.add(m.group()); } System.out.println(numbers); 

आउटपुट: [4.8, 2,000]

मैं एक स्ट्रिंग से संख्याओं को निकालने के लिए एएससीआईआई मानों की जांच करने का सुझाव दूं मान लीजिए आपके पास एक इनपुट स्ट्रिंग है myname12345 और यदि आप सिर्फ 12345 नंबर निकालना चाहते हैं तो आप स्ट्रिंग को कैरेक्टर अर्रे में कनवर्ट करके ऐसा कर सकते हैं, तो निम्न psuedocode का उपयोग करें

 for(int i=0;i<CharacterArray.length;i++) { if(a[i]>=48&&a[i]<=58) System.out.print(a[i]); } 

एक बार संख्याएं निकाले जाने पर उन्हें एक सरणी में जोड़ा जाता है

उम्मीद है की यह मदद करेगा