zoukankan      html  css  js  c++  java
  • 忽略特殊符号比较字符串

      若在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在不同区域信息下比较结果都一样;但是这个区域是哪里我不懂= =求高人指教~

      

  • 相关阅读:
    【SpringBoot系列】邮件发送
    【问题】InteliJ IDEA生成可执行jar运行提示没有主清单属性
    【设计模式】单例设计模式
    【C3P0】C3P0
    【JDBC】JDBC学习(一)
    react hook 防抖
    主线程 宏任务 微任务
    vue 2.0 渲染dom过程
    源码阅读笔记,杂乱
    vue 3.0 响应式原理
  • 原文地址:https://www.cnblogs.com/socialdk/p/2588000.html
Copyright © 2011-2022 走看看