Search code examples
c#.netstringcomparison

string comparison using != is returning true even both strings are the same


I have the following code inside my asp.net application:

if (i["ProjectDescription"] != null && properties.ItemEventProperties.AfterProperties["ProjectDescription"] != null && (Regex.Replace(i["ProjectDescription"].ToString(), "<.*?>", String.Empty) != Regex.Replace(properties.ItemEventProperties.AfterProperties["ProjectDescription"].ToString(), "<.*?>", String.Empty)))
 {
    var g = Regex.Replace(i["ProjectDescription"].ToString(), "<.*?>", String.Empty);
    var gg = Regex.Replace(properties.ItemEventProperties.AfterProperties["ProjectDescription"].ToString(), "<.*?>", String.Empty);
}

now the properties.ItemEventProperties.AfterProperties["ProjectDescription"] =

<div class=\"ExternalClassB4424BCE886A43C980835358CB67D0E8\"><p>This project will be to update Win Server 2008 or older server OS to Win Server 2016.q​123​​<br><br></p><p>It will exclude Win Server 2012.&#160;</p><p>Check attached spreadsheet in draft for list of servers and check the POF&#160;</p><p>Licenses&#58;</p><p>Tere will&#160; be a total of 9 Server VMs upgraded on-premises that require Win Server Licenses.&#160;<br></p><p>There are also 2 existing VMs running on Win Server 2012.<br></p><p>This will require&#160;​6 x (16 cores licenses x 3 hosts) ---&gt; Total 18 x 16 cores Win Standard License​<br>already have 5 x 16 cores Win Standard licenses</p><p>We will need to quote and order for additional 13​ x&#160; Win Server Standard16 cores licenses​<br></p><p>The VM's running on Cloud will be licensed through monthly hosting costs</p><p><strong>Cost Summary&#58;​</strong><br>Licenses - £12,612.60<br>Engineer Resources - £7,880.00<br></p></div>

the i["ProjectDescription"]=

<div class=\"ExternalClassB4424BCE886A43C980835358CB67D0E8\"><p>This project will be to update Win Server 2008 or older server OS to Win Server 2016.q​123<br><br></p><p>It will exclude Win Server 2012.&#160;</p><p>Check attached spreadsheet in draft for list of servers and check the POF&#160;</p><p>Licenses&#58;</p><p>Tere will&#160; be a total of 9 Server VMs upgraded on-premises that require Win Server Licenses.&#160;<br></p><p>There are also 2 existing VMs running on Win Server 2012.<br></p><p>This will require&#160;​6 x (16 cores licenses x 3 hosts) ---&gt; Total 18 x 16 cores Win Standard License​<br>already have 5 x 16 cores Win Standard licenses</p><p>We will need to quote and order for additional 13​ x&#160; Win Server Standard16 cores licenses​<br></p><p>The VM's running on Cloud will be licensed through monthly hosting costs</p><p><strong>Cost Summary&#58;​</strong><br>Licenses - £12,612.60<br>Engineer Resources - £7,880.00<br></p></div>

also the result for the Regex will retrun the following:-

This project will be to update Win Server 2008 or older server OS to Win Server 2016.q​123It will exclude Win Server 2012.&#160;Check attached spreadsheet in draft for list of servers and check the POF&#160;Licenses&#58;Tere will&#160; be a total of 9 Server VMs upgraded on-premises that require Win Server Licenses.&#160;There are also 2 existing VMs running on Win Server 2012.This will require&#160;​6 x (16 cores licenses x 3 hosts) ---&gt; Total 18 x 16 cores Win Standard License​ already have 5 x 16 cores Win Standard licensesWe will need to quote and order for additional 13​ x&#160; Win Server Standard16 cores licenses​The VM's running on Cloud will be licensed through monthly hosting costsCost Summary&#58;​Licenses - £12,612.60Engineer Resources - £7,880.00

but the above string comparison will return true, althought the 2 string are the same. so can anyone advice?


Solution

  • The strings aren't the same. The word ---- is missing in the first string but present in the second (I removed the word as requested by OP as it was an actual username).

    properties.ItemEventProperties.AfterProperties["ProjectDescription"]:

    ...Total 18 x 16 cores Win Standard License​<br>already have 5 x 16 cores Win Standard licenses</p>...

    i["ProjectDescription"]:

    ...Total 18 x 16 cores Win Standard License​<br>----already have 5 x 16 cores Win Standard licenses</p>...

    And as MindSwipe said in a comment, there are differences around 2016.q123<br><br></p><p>It, as there seem to be non printing characters there.