Fix DoROReplaceWords So that parts of words are not affected

This commit is contained in:
Rich 2015-01-24 23:13:55 +00:00
parent 42ba094c03
commit 85771b0dda

View File

@ -538,15 +538,30 @@ namespace Volian.Controls.Library
} }
return text; return text;
} }
private string DoROReplaceWords(ReplaceStrList replaceStrList, string newvalue, bool isHigh) private string DoROReplaceWords(ReplaceStrList replaceStrList, string oldvalue, bool isHigh)
{ {
int profileDepth = ProfileTimer.Push(">>>> DoROReplaceWords");
string newvalue = oldvalue;
foreach (ReplaceStr rs in replaceStrList) foreach (ReplaceStr rs in replaceStrList)
{ {
if (((rs.Flag & E_ReplaceFlags.Setpoint) > 0) || (isHigh && (rs.Flag & E_ReplaceFlags.HLSSetpnt) > 0)) if (((rs.Flag & E_ReplaceFlags.Setpoint) > 0) || (isHigh && (rs.Flag & E_ReplaceFlags.HLSSetpnt) > 0))
{ {
newvalue = newvalue.Replace(rs.ReplaceWord, rs.ReplaceWith); try
{
// Use regular expression to assure that the ReplaceWord is not part of another word
// For VEPROMS_CAL E-0 Step 23 (Reset SI) the word "after" was being changed to "aFTer"
newvalue = Regex.Replace(newvalue, @"(?<=\W|^)" + rs.ReplaceWord + @"(?=\W|$)", rs.ReplaceWith);
//newvalue = newvalue.Replace(rs.ReplaceWord, rs.ReplaceWith);
}
catch (Exception ex)
{
_MyLog.Warn("Problem with regular expression", ex);
} }
} }
}
//if (oldvalue != newvalue)
// Console.WriteLine("\"{0}\"\r\n\"{1}\"",oldvalue,newvalue);
ProfileTimer.Pop(profileDepth);
return newvalue; return newvalue;
} }
// Replace spaces with hardspaces, but DO NOT replace the end of an Rtf Command with a hardspace // Replace spaces with hardspaces, but DO NOT replace the end of an Rtf Command with a hardspace