C#:有没有更好的方法来替换特殊字符和比较

时间:2017-09-28 05:42:23

标签: c#

我有2个类似的字符串,除了一些特殊字符。是否有更好的方法来比较和检查是否相等?

string str1 = "Hello (T) How";
string str2 = "Hello [T] How";

if (str1.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "") == str2.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", ""))
{
    Console.WriteLine("Equal");
}

3 个答案:

答案 0 :(得分:3)

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string str1 = "Hello (T) How";
      string str2 = "Hello [T] How";
      string str3 = "Hello [X] How";

      var compare1And2 = String.Compare(str1, str2, CultureInfo.InvariantCulture, CompareOptions.IgnoreSymbols);
      var compare1And3 = String.Compare(str1, str3, CultureInfo.InvariantCulture, CompareOptions.IgnoreSymbols);

      System.Console.WriteLine(compare1And2); // 0 
      System.Console.WriteLine(compare1And3); // -1
   }
}

答案 1 :(得分:2)

您只需使用正则表达式即可完成此操作。

Regex.Replace(str, @"[^0-9a-zA-Z]+", "");

这将替换您的字符串中的所有特殊字符 - 在您的情况下 -

if(Regex.Replace(str1, @"[^0-9a-zA-Z]+", "").Equals(Regex.Replace(str2, @"[^0-9a-zA-Z]+", ""))) 
{
    // Write code here
}

Regex命名空间中的System.Text.RegularExpressions类也可用

答案 2 :(得分:0)

你可以这样做:

string str1 = "Hello (T) How";
string str2 = "Hello [T] How";

bool isEqual = string.Join("", str1.ToCharArray().Where(c => char.IsLetter(c)).ToArray()) ==
string.Join("", str2.ToCharArray().Where(c => char.IsLetter(c)).ToArray());

基本上我在这里做的是在比较之前我只选择所有字母。

相关问题