在比较两个字符串时忽略一行

本文关键字:一行 两个 比较 字符串 | 更新日期: 2023-09-27 18:01:23

我需要比较代表html的两个字符串(都是300行)。它们应该是相同的,除了一行包含dd/MM/yyyy hh:mm:ss格式的日期,所以我需要忽略那一行。

问题是我有一个静态文件,其中包含一个html,我用它作为比较的基础,另一个我从URL运行时得到。所以这一行的日期总是不同的

行没有任何标识符标记,如idname,甚至父元素也没有任何东西来标识它。那么,我有哪些选项可以忽略比较方法中的这一行呢?

在比较两个字符串时忽略一行

用正则表达式删除日期时间。替换,然后比较字符串

您可以尝试查找定义日期行的字符序列在字符串中的位置。

假设你的日期行以"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 ;