簡體   English   中英

從價格中刪除無效字符

[英]Removing invalid characters from price

我有一種情況,我必須使用C#從價格字符串中刪除某些字符。

我正在尋找一個正則表達式來刪除這些字符或比這更好的東西。

例如,如果價格字符串是

"3,950,000 ( Ex. TAX )"

我想從字符串中刪除"( Ex. TAX )"

基本上,我必須從字符串中刪除任何字符,數字,點和逗號除外。

正則表達式總是很棘手,因為輸入可能會有很大的不同,但是我認為這可以滿足您的需求:

string pattern = @"([\d]+[,.]{0,1})+";
string cleanedPrice = Regex.Match(price, pattern).Value;

解釋:

(         - start matching group
[\d]+     - match any decimal digit, at least once
[,.]{0,1} - ...followed by 0 or 1 comma or dot
)         - end of group
+         - repeat at least once

簡單替換即可使用RegEx嗎?

string clean = "3,950,000 ( Ex. TAX )".Replace(" ( Ex. TAX )", string.Empty);

嘗試這個

myPrice.Replace(" ( Ex. TAX ),"")
String price = "3,950,000 ( Ex. TAX)".Replace(" ( Ex. TAX)","");

您可以使用以下正則表達式

情況1:如果(Ex.TAX)是常數,則可以使用字符串函數String.Replace刪除文本。

情況2:如果您要求僅包含的數字,則可以使用以下正則表達式提取相同的數字

[0-9,{1,}

情況3:如果(數字后面總是有數字,則可以使用以下正則表達式

\\ d *(?= \\()

以下是正則表達式的C#代碼

public static Regex regex = new Regex(
      "\\d.*(?=\\() ",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );
//// Capture the first Match, if any, in the InputText
// Match m = regex.Match(InputText);

要找到“(例如TAX)”,請嘗試以下正則表達式:

/\( Ex\. TAX \)/i
 Regex rex = new Regex(@"(?:(?:\d{1,2},)?(?:\d{3},)*(?:\d{3})(?:\.\d+){0,})|(\d+)");

 Console.WriteLine(rex.Match("3,950,000 ( Ex. TAX )").Groups[0].Captures[0].Value);
 Console.WriteLine(rex.Match("3,950,000,000").Groups[0].Captures[0].Value);
 Console.WriteLine(rex.Match("3,950,000,000UHFWF#FWHFWEFE").Groups[0].Captures[0].Value);
 Console.WriteLine(rex.Match("3,950,000,000,000,000.00").Groups[0].Captures[0].Value);

輸出:

  • 3,950,000
  • 39.5億
  • 39.5億
  • 3,950,000,000,000,000.00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM