忽略特殊符号比较字符串

  若在C#中想比较两个字符串,但是两个字符串中又夹杂着许多的符号,如果单纯的想比较字母或数字,则不能使用最简单的Compare来比较他们。一般的常规方法是比较不出的。只能使用CultureInfo中的CompareInfo来比较。然后有一个CompareOptions.IgnoreSymbols选项可以供选择。同时在引用中也要加入System.Globalization才能使用这个比较。若为0则表示相等。

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace ConsoleApplication1 {
    class Program {
        static void Main(string[] args) {
            string a="dfdsa+-38':c";
            string b="df(d&s*a3<8c";
            //正常比较
            Console.WriteLine("Compare a and b:{0}",string.Compare(a,b));
            //使用CultureInfo中的CompareInfo来比较
            Console.WriteLine("(CurrentCulture) Compare a and b:{0}",CultureInfo.CurrentCulture.CompareInfo.Compare(a,b,CompareOptions.IgnoreSymbols));
            Console.WriteLine("(InvariantCulture) Compare a and b:{0}", CultureInfo.InvariantCulture.CompareInfo.Compare(a, b, CompareOptions.IgnoreSymbols));
        }
    }
}

  上面的输出为第一个为1,第二第三个为0。

  但是CultureInfo.CurrentCulture和CultureInfo.InvariantCulture我没有搞清楚。

  网上一般说CurrentCulture在当前区域信息下进行比较可以给出一样的结果;InvariantCulture在不同区域信息下比较结果都一样;但是这个区域是哪里我不懂= =求高人指教~

  

原文地址:https://www.cnblogs.com/socialdk/p/2588000.html