如何在c#中比较两个字符串并忽略特殊字符

 丁丽君coolboy 发布于 2023-02-12 14:49

我想比较c#中的两个字符串,如果一个字符串有任何特殊字符,那么它应该被忽略.如果 - 如果 -

string a1= "he is a good guy";
string a2="h2$#%# is a good guy";

之后string.ReferenceEquals(a1,a2)应该返回True吗?

我怎样才能做到这一点?

1 个回答
  • 首先,ReferenceEquals这里并不好,因为它比较了参考,而不是价值.因此,如果您比较两个不同的变量,您的代码将始终为false(并且字符串将不会被实现,但它是一个不同的故事).

    要比较字符串,请使用string.Equals方法.但首先,你必须摆脱特殊字符,在Regex的帮助下可以实现:

    string a2 = "h2$#%# is a good guy";
    string a3 = Regex.Replace(a1, @"[^\w\d\s]", "");
    

    这告诉你要用空字符串替换不是(^)单词字符(\w),数字(\d)或空格(\s)的所有内容.

    使用它,您的解决方案应如下所示:

    string.Equals(Regex.Replace(a1, @"[^\w\d\s]", ""), 
                  Regex.Replace(a2, @"[^\w\d\s]", ""));
    

    要不重复正则表达式代码,您可以为字符串编写辅助扩展方法:

    public static class StringExtensions
    {
        public static string RemoveSpecialCharacters(this string str)
        {
            return Regex.Replace(str, @"[^\w\d\s]", "");
        }
    }
    

    你的代码将是:

    string.Equals(a1.RemoveSpecialCharacters(), 
                  a2.RemoveSpecialCharacters());
    

    2023-02-12 14:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有