2010-11-03 11 views
0

我想提取數出那些包含字符串的非數字字符Convert.ToDouble非數字串

我想Convert.ToDouble(Regex.Replace(data[i].ToString(), @"ANSWER HERE", ""));

例字符串:"wd123.321dw" 想要得到123.321出來那個。

也爲陰性:"we-123.321ew"爲-123.321

任何線索?

回答

4

是這樣的嗎?

 string n = "wd123.321dw"; 
     var regNumber = new Regex(@"\-?\d+\.?\d+"); 

     var match = regNumber.Match(n); 
     if (match.Success) 
     { 
      double d; 
      if (Double.TryParse(match.Value, out d)) 
      { 
       Console.WriteLine("The number is: {0}",d); 
      } 
     } 
+0

不得不說,我被這些迴應吹走了。一段時間沒有堆疊飛越,但現在笑了起來。謝謝! – Nick 2010-11-03 18:20:42

1
double d_val = Convert.ToDouble(Regex.Replace(data[i].ToString(), @"[^0-9\.\-]", "")); 
+0

不適用於底片。我知道,當你回答它的時候,這並不是我的問題,在我能夠直接思考之前,回答來自SO! – Nick 2010-11-03 18:15:08

+0

@Nick - 那好吧,我已經更新,包括字面' - '。這顯然不如driis的解決方案好,因爲他只會匹配有效的數字格式。 – SwDevMan81 2010-11-03 18:17:48

+0

去檢查性能 - 如果你的速度明顯更快,它可能必須是我使用的方法! – Nick 2010-11-03 18:23:36

0

試試這個作爲你的正則表達式:

"0+" + Regex.Escape(CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator) + "0+" 

這將使用當前的區域設置小數點分隔符從Windows。

+1

0+匹配一個或多個零。 – 2010-11-03 18:10:28

相關問題