在比较两个字符串时忽略一行
本文关键字:一行 两个 比较 字符串 | 更新日期: 2023-09-27 18:01:23
我需要比较代表html的两个字符串(都是300行)。它们应该是相同的,除了一行包含dd/MM/yyyy hh:mm:ss
格式的日期,所以我需要忽略那一行。
问题是我有一个静态文件,其中包含一个html,我用它作为比较的基础,另一个我从URL
运行时得到。所以这一行的日期总是不同的
行没有任何标识符标记,如id
或name
,甚至父元素也没有任何东西来标识它。那么,我有哪些选项可以忽略比较方法中的这一行呢?
用正则表达式删除日期时间。替换,然后比较字符串
您可以尝试查找定义日期行的字符序列在字符串中的位置。
假设你的日期行以"mydate"开头。
从两个文件中获取从索引0到indexOf("mydate")的字符串的第一部分,并比较它们(如果没有找到"mydate",那么有些东西确实不同,没有找到日期行)。
然后从两个文件的日期行后面的索引中获取字符串的第二部分,并比较它们。
您可以使用regex从两个html 中删除两个日期时间,然后比较它们
一个简单的解决方案是识别静态HTML (s1)中与从URL获得的HTML (S2)不相同的字符。
先决条件是更新静态HTML s1,将DateTime替换为"##.##.##.##.##"这样的字符串。##"确保这个字符串的所有字符不能匹配s2中的DateTime的任何字符(包括分隔符)。
string originalDateTimeString = "##.##.##.##.##.##" ;
// check to see if same length
bool compareok=s1.Length==s2.Length ;
// check all char. when different store char in diff1
string diff1="" ;
int lastDiffIndex =-1 ;
for (int i=0;i<s1.Length && compareok; i ++) if(s1[i]!=s2[i])
{ // Check if differences are consecutive
compareok = lastDiffIndex==-1 || lastDiffIndex==i-1 ;
diff1+=s1[i] ;
lastDiffIndex=i ;
}
// The comparison succeeds if the differences matches the original DateTime string
compareok = compareok && diff1==originalDateTimeString ;