我在 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/

    10-11 04:38