我需要比较一些字符串,并检查是否可以在另一个字符串中找到每个以空格分隔的字段。 字符串A上可能缺少某些字段,但无论如何字段的顺序都是相同的
示例:
String A: AAA CCC DDD
String B: AAA BBB CCC DDD
确定
String A: AAA CCC DDD
String B: AAA BBB DDD
不行
我将使用C#,但通用算法也可以。
答案 0 :(得分:6)
您可以在空格中split两个字符串,然后使用Enumerable.Except
检查是否有任何不匹配的元素。
if(stringA.Split().Except(stringB.Split()).Any())
{
//extra elements present
}
答案 1 :(得分:0)
这是你在找什么?它检查源字符串中的每个部分是否在要比较的字符串中。
var sourceString = "AAA CCC DDD";
var compareTo = "AAA BBB CCC DDD";
sourceString.Split(' ').All(x=>compareTo.Contains(x));
答案 2 :(得分:0)
因此,如果我理解正确,只有当B包含与A相同的字段时,结果才为真,并且可选地在此处插入一些额外字段。在最坏的情况下,一个好的算法给出最多N步的答案,其中N是B中的字段数。
伪代码:
FA = fields of A
FB = fields of B
if len(FB) < len(FA):
return False
ia = 0
ib = 0
while ia < len(FA):
if FA[ia] == FB[ib]:
ia += 1
ib += 1
else:
ib += 1
if len(FB)-ib < len(FA)-ia:
return False
# we finished with the loop, ia reached len(FA)
return True