我有string
string cubeinline = "12345123451234X1234512345";
等于List<string>
List<string> cube = new List<string>(){ "12345",
"12345",
"1234X",
"12345",
"12345"};
但不同的安排。字符串按长度分割。在这种情况下5。
现在我需要将字符串与List进行比较 - char by char。但是我的方法说每个字符都是无效的。
int maxLength = 5;
for (int i = 0; i < cubeinline.Length; i++)
{
if (cubeinline[i] == cube[i / maxLength][i % maxLength])
{
Console.WriteLine("Error in char" + i);
}
}
答案 0 :(得分:10)
将==
更改为!=
。你在这里颠倒逻辑:程序应该在有差异时显示消息,而不是有效性!
答案 1 :(得分:1)
Map
答案 2 :(得分:1)
我通常会将LINQ用于此目的。在这种方法中,您使用SequenceEqual
方法检查两个序列(一个是cube
,一个是Splitted字符串为5个大小)并通过比较元素来检查两个序列是否相等:
bool res = cube.SequenceEqual(Enumerable.Range(0, cubeinline.Length / 5)
.Select(i => cubeinline.Substring(i * 5, 5)));
答案 3 :(得分:0)
将您的if条件更改为
if ( cubeinline[i] != cube[i / maxLength][i % maxLength] )
{
Console.WriteLine ("Error in char" + i);
}
或者请添加其他条件,
if ( cubeinline[i] == cube[i / maxLength][i % maxLength] )
{
Console.WriteLine ("Match found at " + i);
}
else
{
Console.WriteLine ("Error in char" + i);
}
答案 4 :(得分:0)
将字符串存储在列表中的原因是什么?即使必须将它们保留在列表中,也可以使用string temp
变量将列表中的字符串组合成单个字符串,然后使用String.Equals
方法比较字符串和临时字符串。
此方法更适合比较基于值的字符串,因为==
检查引用相等性。继承人another question you should check out。