我有一个场景,我必须使用C#从价格字符串中删除某些字符。
我正在寻找一个正则表达式来删除这些字符或更好的东西。
例如,如果价格字符串是
"3,950,000 ( Ex. TAX )"
我想从字符串中删除"( Ex. TAX )"
。
基本上我必须删除除数字,点和逗号之外的字符串中的任何字符。
答案 0 :(得分:3)
正则表达式总是很难做到正确,因为输入可能变化很大,但我认为这个可以满足您的需求:
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
答案 1 :(得分:1)
为什么在简单替换时会使用RegEx?
string clean = "3,950,000 ( Ex. TAX )".Replace(" ( Ex. TAX )", string.Empty);
答案 2 :(得分:1)
试试这个
myPrice.Replace(" ( Ex. TAX ),"")
答案 3 :(得分:1)
String price = "3,950,000 ( Ex. TAX)".Replace(" ( Ex. TAX)","");
答案 4 :(得分:1)
您可以使用以下正则表达式
案例1:if(Ex.TAX)是常量,您可以使用字符串函数String.Replace删除文本。
案例2:如果您需要仅包含的数字,以下是您可以用来提取相同的正则表达式
[0-9,{1,}
案例3:if(总是在数字之后,可以使用以下正则表达式
\ 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);
答案 5 :(得分:0)
要找到“(例如TAX)”试试这个正则表达式:
/\( Ex\. TAX \)/i
答案 6 :(得分:0)
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);
输出: