我在 C# 应用程序中有一个字符串,想知道检查最后两个字符是否是 ,
(逗号和空格)并使用正则表达式删除它们的正确方法是什么。
最佳答案
(对不起,我在聚会上迟到了。)
是的,这不是您必须或应该使用正则表达式的东西;但既然你问如何用正则表达式来做(例如,也许你只是好奇,“假设我必须用正则表达式来做”假设是一种很好的学习方式),请考虑以下模式:
(.*?)(, )?$
您可以在 related regex fiddle 中对其进行测试。
关键点:
(.*?)
– 尽可能少地匹配除换行符 ( *
) 之外的零个或多个 ( .
) 任何字符 ( ?
)。 (, )?$
– 在末尾匹配零或一 (?
) ,
($
)。 此外,以下带有此模式的 C# 示例...
var str1 = "whatever, ";
var str2 = "whatever, ,";
var str3 = "";
var regex = new Regex("(.*?)(, )?$");
var str1Match = regex.Match(str1);
var str2Match = regex.Match(str2);
var str3Match = regex.Match(str3);
Console.WriteLine(str1Match.Groups[1].Value);
Console.WriteLine(str2Match.Groups[1].Value);
Console.WriteLine(str3Match.Groups[1].Value);
...产生以下输出:
str1
("whatever, "
) => whatever
str2
("whatever, ,"
) => whatever, ,
str3
( ""
) => 它使用
Groups[1].Value
来获取第一个捕获组的值(即由 (.*?)
而不是 (, )?
(如果有)匹配的值)。编辑:
我实际上更喜欢@UlugbekUmirov 在他的评论 (
string output = Regex.Replace("my string, ", ", $", "");
) 中提出的建议,因为它非常简单;但希望你发现我概述的方法很有启发性。关于c# - 如何使用正则表达式从字符串(如果有)中删除最后一个逗号和空格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27845567/