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

时间:2015-07-07 18:41:45

标签: c# string

我需要比较两个表示html的字符串(类似于300行)。它们应该是相同的,除了包含这种格式dd/MM/yyyy hh:mm:ss的日期的行,所以我需要忽略该行。 问题是我有一个静态文件,其中包含一个html,我用它作为比较的基础,另一个是我从URL运行的。因此,该日期的这一行将始终不同。

该行没有任何标识符标记,例如idname,即使父元素也没有任何标识它。那么,在比较方法中我必须忽略这一行的选项是什么?

4 个答案:

答案 0 :(得分:3)

使用Regex.Replace删除日期时间,然后比较字符串。

答案 1 :(得分:0)

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

假设您的日期行以" mydate"。

开头

从两个文件中获取从索引0到indexOf(" mydate")的字符串的第一部分并进行比较(如果找不到" mydate",那么有些东西是真的不一样,没有找到日期线)。

然后从两个文件的日期行之后直接获取字符串的第二部分并比较它们。

答案 2 :(得分:0)

您可以从htmls 中删除日期时间,使用正则表达式然后比较

答案 3 :(得分:0)

一个简单的解决方案是识别静态HTML(s1)的字符,这些字符与从URL获得的HTML(S2)不同。

先决条件是通过用“##。##。##。##。##。##”之类的字符串替换DateTime来更新静态HTML s1,确保此字符串的所有字符都不能匹配s2中DateTime的任何char(包括分隔符)。

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 ; 
相关问题