在LINQ中是否可以在只有1个字符差异的字符串列表中找到一个字符串?
s_Str = "XXX_P_P1";
l_str = {"XXX_N_P1", "XX1_Z_P1","XX2_A_P1","DXX_P_P1"};
从上面,结果应该返回:
f_Str = {"XXX_N_P1","DXX_P_P1"}
列表中的字符串将具有不同的字符串长度。我的主要要求是找到XXX_N_P1
主要要求各不相同,这就是为什么我只需要查找具有1个字符差异的字符串。
我曾经用扩展方法解决过类似的问题:
/// <summary>
/// String extensions methods
/// </summary>
public static class StringExtensionsClass
{
/// <summary>
/// Check if two strings has only one "difference"
/// </summary>
/// <param name="BaseString"></param>
/// <param name="StringToCountDiff"></param>
/// <returns></returns>
public static bool HasOneDiff(this string BaseString, string StringToCountDiff)
{
int _diffCount = 0;
if (BaseString.Length == StringToCountDiff.Length)
{
for (int i = 0; i < BaseString.Length; i++)
{
if (BaseString[i] != StringToCountDiff[i])
{
_diffCount++;
}
}
if (_diffCount == 1)
{
return true;
}
}
return false;
}
}
和LINQ:
var matches = l_str.Where(l => l.HasOneDiff(s_Str) == true).ToArray();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句