दिलचस्प पोस्ट
इरोटोथेनिस एल्गोरिथ्म के छलनी के समय की जटिलता सेलेनियम वेबड्राइवर सी # का उपयोग करके ड्रॉप डाउन में कोई विकल्प कैसे चुन सकता है? एसक्यूएल आदेश विशिष्ट क्रम में कई मूल्यों से? आईओएस 8 आईफोन पर यूआईपीओपरप्रदर्शन नियंत्रक कैसे grep में नई लाइन के लिए एक पैटर्न देने के लिए? हेडर सूचना को संशोधित नहीं कर सकता – हेडर जो पहले से ही भेजे गए हैं … WordPress अंक स्प्रिंग सुरक्षा के साथ जावा कोड में "हैरोल" कैसे जांचें? एक साजिश में 4 घटता प्लॉटिंग, 3 वाई-एक्से के साथ एसक्यूएलईटी 3 संहिता के साथ इकाई फ़्रेमवर्क 6 पहले – तालिकाओं का निर्माण नहीं करेगा ब्लॉकबैक के साथ कॉलबैक लॉजिक को सरल कैसे करें? संख्या को दो दशमलव स्थानों पर स्वरूपित करें AntiXss.HtmlEncode और HttpUtility.HtmlEncode के बीच अंतर क्या है? एमवीवीएम के लिए मैं किस रूपरेखा का उपयोग करना चाहिए? स्विंग जीयूआई में एक 3-पार्टी जेएपलेट को एम्बेड करें और इसे पैरामीटर पास करें पुनरावर्तक में पुनरावर्तक

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

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


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

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

Solutions Collecting From Web of "स्ट्रिंग से संख्याओं को निकालने के लिए और 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]); } 

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

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