[英]Regex to get decimal value in string
因為我是C#開發人員,所以我也會接受C#答案。
可以說我有以下字符串:“ R 560.00”
有一個字母字符和一個帶十進制值的空格。
我們還可以在字符串上加上引號。
但是我想要的是僅在字符串中獲取十進制值。 所有其他字符都應刪除。
注意:String.Replace不能按我想要的方式工作,這就是為什么我轉向正則表達式。
這是我嘗試過的:fields(amountIdx)將包含R560.00
Dim regex As New Regex("^[0-9]+(\.[0-9]{1,2})?$", RegexOptions.IgnoreCase)
Dim amount As String = regex.Replace(fields(amountIdx), "^[0-9]+(\.[0-9]{1,2})?$")
但金額反映為R 560.00。 它不會刪除其他字符。 我該怎么做?
您可以簡單地使用
Regex.Replace("R500.12", "[^-?\d+\.]", ""))
例如: MsgBox(Regex.Replace("R500.12", "[^-?\\d+\\.]", ""))
它將返回500.12
嘗試這個
var resultArray = Regex.Split(input_string, @"[^0-9\.]+")
.Where(c => c != "." && c.Trim() != "");
其中(c => ...)是用於處理數組每個元素的lambda,而c是數組元素
這是一個LINQ hack,它采用字符串中的第一個十進制y正數,其中“十進制y”由一系列數字和點定義:
string s = "R 560.00";
string decimalyNumber = new String(s.SkipWhile(c => !Char.IsDigit(c) || c != '.')
.TakeWhile(c => Char.IsDigit(c) || c == '.').ToArray());
它的工作方式是跳過字符,直到找到一個數字/點,然后按數字和點的連續順序獲取所有內容。 我可以想象性能不會那么熱,但是除非您能在短時間內完成數百萬個任務...
或者,您可以使用Regex並簡單地匹配[0-9]*(?:\\.[0-9]+)?
,可以是零個或多個數字(可選),后跟一個點和一個或多個數字(未捕獲)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.