[英]How to compare two char arrays and display the different char?
我想比較兩個字符數組,並且我想(如果它們不相等)在輸出上顯示不同的字符。 例如,在下面的代碼中,其他字符為“ y”。 因此,在輸出中,我想寫成:“不同的char是y,它在數組ay中,但不在ar中”。 我正在使用C#,這是我編寫的代碼,CompareTo方法出現錯誤。 誰能幫我 ? 提前致謝。 注意:我仍然是初學者。
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
if (ar.SequenceEqual(ay))
{
Console.WriteLine("Success");
}
else
{
Console.WriteLine("failure");
char diff = ar.CompareTo((Object)ay));
Console.Write(diff);
}
看看這個;
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
List<char> matches = new List<char>();
if (ar.SequenceEqual(ay))
{
Console.WriteLine("Success");
}
else
{
for (int i = 0; i < ar.Count(); i++)
{
if (ar[i] != ay[i])
{
matches.Add(ay[i]);
}
}
foreach (var matched in matches)
{
Console.WriteLine("Failure: " + matched);
}
}
嘗試此選項,我還為陣列添加了一個額外的字符,僅用於失敗檢查:
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'f', 'm', 'a', 'd' };
Console.WriteLine(GetDiffOfCharArray(ay, ar, "ay", "ar"));
ay = new char[] { 'a', 'h', 'm', 'a', 'd' };
Console.WriteLine(GetDiffOfCharArray(ay, ar, "ay", "ar"));
Console.ReadLine();
}
private static string GetDiffOfCharArray(char[] array1Values, char[] array2Values, string array1Name, string array2Name)
{
string result = "";
if (array1Values.SequenceEqual(array2Values))
{
result = string.Format("Success, Array '{0}' matches Array '{1}'", array1Name, array2Name);
}
else
{
var diff = array1Values.Except(array2Values);
result = string.Format("Failure, the different char is '{0}', it is in the array '{1}' but not in the array '{2}'",
string.Join("','", diff),
array1Name,
array1Name);
}
return result;
}
}
}
失敗和成功的輸出如下:
失敗,不同的字符為“ y”,“ f”,它在數組“ ay”中,但不在數組“ ay”中
成功,數組“ ay”與數組“ ar”匹配
使用Except方法,您可以非常簡單地完成此操作,而不必兩次比較數組。
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
var different = ar.Except(ay).ToList();
if (different.Count == 0)
{
Console.WriteLine("Success");
}
else
{
foreach (char c in different)
{
Console.WriteLine(c);
}
}
Console.WriteLine("Percent of similarity: "+(100-different.Count*100/ar.Length) +"%");
艾曼,除了可以幫你。 這是代碼。
IEnumerable<char> inArArray = ar.Except(ay);
foreach (char c in inArArray) {
Console.WriteLine("{0} Exists in ar but not in ay",c);
}
IEnumerable<char> inAyrray = ay.Except(ar);
foreach (char c in inAyrray)
{
Console.WriteLine("{0} Exists in ay but not in ar", c);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.