Rimozione di caratteri non validi dal prezzo

Ho uno scenario in cui devo rimuovere determinati caratteri da una stringa di prezzo usando C #.

Sto cercando un’espressione regolare per rimuovere questi personaggi o qualcosa di meglio.

Ad esempio, se la stringa del prezzo è

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

Voglio rimuovere "( Ex. TAX )" dalla stringa.

Fondamentalmente devo rimuovere qualsiasi carattere dalla stringa tranne numeri, punti e virgola.

Le espressioni regolari sono sempre difficili da ottenere, dal momento che l’input può variare molto, ma penso che questo copra le tue esigenze:

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

Ha spiegato:

 ( - 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 

Perché usare una RegEx quando verrà eseguita una semplice sostituzione?

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

prova questo

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

Puoi usare la seguente espressione regolare

Caso 1: se (Ex.TAX) è costante, è sufficiente rimuovere il testo utilizzando la funzione stringa String.Replace.

Caso 2: se si richiede il numero che contiene solo, di seguito è riportato il regex che è ansible utilizzare per estrarre lo stesso

[0-9,] {1,}

Caso 3: se (c’è sempre lì dopo il numero, è ansible utilizzare la regex seguente

\ D. * (? = \ ()

di seguito è riportato il codice c # per regex

 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); 
  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); 

Produzione:

  • 3.950.000
  • 3,95 miliardi
  • 3,95 miliardi
  • 3,950,000,000,000,000.00

Per trovare “(Es. TASSA)” prova questa regex:

 /\( Ex\. TAX \)/i