2010-09-02 19 views
31

मैं उदाहरण के लिए एक स्ट्रिंग वर्णमाला वर्ण containg है,:आप स्ट्रिंग से सभी वर्णमाला वर्णों को कैसे हटाते हैं?

  1. 254,69 मीटर
  2. 26,56 सेमी
  3. 23,36 इंच
  4. 100,85 फीट

मैं उपर्युक्त तारों से सभी वर्णमाला वर्णों (इकाइयों) को हटाना चाहता हूं ताकि मैं डबल। पर्स() विधि को कॉल कर सकूं।

उत्तर

74

यह काम करना चाहिए:

Regex.Replace(s, "[^0-9.]", "") 
+16

शायद कोई भी संकेत सुरक्षित रखना चाहते हैं: '" [^ 0-9 + -।] "' – BillP3rd

+0

@ BillP3rd - लेकिन alphabates दूर करने के लिए करना चाहता है और स्ट्रिंग संख्या के साथ इकाइयों की है। क्या आपको वास्तव में इसकी आवश्यकता है? समाधान के लिए –

+0

धन्यवाद प्रणय। बिलपी 3 वें, वर्तमान में मुझे + - संकेतों की आवश्यकता नहीं है, लेकिन अपडेट के लिए धन्यवाद, भविष्य में हो सकता है कि मैं संकेतों को संरक्षित करना चाहता हूं। –

15

आप इस Regex का उपयोग करके हल करने में सक्षम होना चाहिए। मान लें कि आप इकाइयों के रूप में केवल वर्णमाला अक्षर और जगह है

string value = Regex.Replace(<yourString>, "[A-Za-z ]", ""); 
double parsedValue = double.Parse(value); 

: उसके बाद

using System.Text.RegularExpressions; 

आप निम्नलिखित का उपयोग कर सकते हैं: अपनी परियोजना के लिए निम्न संदर्भ जोड़ें। गूगल के अमरूद पुस्तकालय से

0

उपयोग CharMatcher एपीआई:

String magnitudeWithUnit = "254.69 meter"; String magnitude = CharMatcher.inRange('a', 'z').or(inRange('A', 'Z')).removeFrom(magnitudeWithUnit);

स्थिर आयात CharMatcher.inRange करते हैं (..)। आप पीछे की जगह के परिणामों को ट्रिम कर सकते हैं।

+2

वास्तव में सी #/बीसीएल –

2

LINQ का उपयोग करना:

using System.Linq; 

string input ="57.20000 KG "; 
string output = new string(input.Where(c=>(Char.IsDigit(c)||c=='.'||c==',')).ToArray()); 
+0

द्वारा समर्थित किसी चीज़ के लिए बाह्य निर्भरता की अनुशंसा नहीं करेगा: यह समाधान केवल थोड़ी सी बात है: यह समाधान System.Text.RegularExpressions पर निर्भरता को हटा देता है - जिसका उपयोग आमतौर पर वर्तमान एप्लिकेशन में नहीं किया जाता है । – condiosluzverde

संबंधित मुद्दे