diff --git a/PROMS/DataLoader/TextConvert.cs b/PROMS/DataLoader/TextConvert.cs index e068d310..51d985c5 100644 --- a/PROMS/DataLoader/TextConvert.cs +++ b/PROMS/DataLoader/TextConvert.cs @@ -216,7 +216,7 @@ namespace DataLoader public static string ConvertDOSSuperAndSubScripts(string instr) { string retval = Regex.Replace(instr, "[#](.*?)[#]", "\\up2 $1\\up0 ");// DOS Superscript - retval = Regex.Replace(retval, "[~](.*?)[~]", "\\dn2 $1\\dn0 ");// DOS Subscript + retval = Regex.Replace(retval, "[~](.*?)[~]", "\\dn2 $1\\up0 ");// DOS Subscript return retval; } private static string FixFortranNumber(Match match) @@ -391,10 +391,14 @@ namespace DataLoader // now replace underline on/off (AE,AF), super on/off (C6,C7) // bold on/off (D5, D6), subscript on/off (D1 A6), and // italics on/off (B2, DD) - s2 = s2.Replace("\xAB", "\\ul "); - s2 = s2.Replace("\xBB", "\\ulnone "); + //s2 = s2.Replace("\xAB", "\\ul "); + //s2 = s2.Replace("\xBB", "\\ulnone "); //s2 = s2.Replace("\x255E", "\\super "); //s2 = s2.Replace("\x255F", "\\nosupersub "); + //\xAB -> \\ul and \xBB -> \\ulnone - look for pairs: + s2 = Regex.Replace(s2, @"\xAB([^\xBB]*?)\xBB", @"\ul $1\ulnone "); + // if there is an underline on without underline off or vice versa, just remove it. + if (s2.Contains("\xAB") || s2.Contains("\xBB")) s2 = s2.Replace("\xAB", "").Replace("\xBB", ""); s2 = s2.Replace("\x255E", "\\up2 "); s2 = s2.Replace("\x255F", "\\up0 "); s2 = s2.Replace("\x2552", "\\b "); @@ -402,7 +406,7 @@ namespace DataLoader //s2 = s2.Replace("\x2564", "\\sub "); //s2 = s2.Replace("\xAA", "\\nosupersub "); s2 = s2.Replace("\x2564", "\\dn2 "); - s2 = s2.Replace("\xAA", "\\dn0 "); + s2 = s2.Replace("\xAA", "\\up0 "); s2 = s2.Replace("\x2593", "\\i "); s2 = s2.Replace("\x258C", "\\i0 "); s2 = s2.Replace("\x2559", "\\ul\\b "); @@ -416,7 +420,7 @@ namespace DataLoader //s2 = Regex.Replace(s2, @"\x18([^\x18 ]*?)(?:[\x18]|(?= )|\Z)(.*?)", @"\super $1\nosupersub $2"); //s2 = Regex.Replace(s2, @"\x19([^\x19 ]*?)(?:[\x19]|(?= )|\Z)(.*?)", @"\sub $1\nosupersub $2"); s2 = Regex.Replace(s2, @"\x18([^\x18 ]*?)(?:[\x18]|(?= )|\Z)(.*?)", @"\up2 $1\up0 $2"); - s2 = Regex.Replace(s2, @"\x19([^\x19 ]*?)(?:[\x19]|(?= )|\Z)(.*?)", @"\dn2 $1\dn0 $2"); + s2 = Regex.Replace(s2, @"\x19([^\x19 ]*?)(?:[\x19]|(?= )|\Z)(.*?)", @"\dn2 $1\up0 $2"); s2 = Regex.Replace(s2, @"\x13([^\x13 ]*?)(?:[\x13]|(?= )|\Z)(.*?)", @"\b $1\b0 $2"); s2 = Reg2.Replace(s2, new MatchEvaluator(ReplaceChars)); @@ -427,7 +431,7 @@ namespace DataLoader s2 = s2.Replace(@"}", @"\}"); s2 = s2.Replace("\n", @"\par "); // line break in tables s2 = s2.Replace(@"\up0 \up2 ", @"\up2 "); //jsj - 18MAR2010 - rbt.Save() seems to do this automatically - s2 = s2.Replace(@"\dn0 \dn2 ", @"\dn2 "); //jsj - 18MAR2010 - rbt.Save() seems to do this automatically + s2 = s2.Replace(@"\up0 \dn2 ", @"\dn2 "); //jsj - 18MAR2010 - rbt.Save() seems to do this automatically return s2; }