截取字符串并且关键字颜色显示
public string Highline(String StringValue, String[] HighValues, int Len)



{

if (StringValue == String.Empty) return String.Empty;

List<int> BeforePositions = new List<int>();

List<int> AfterPositions = new List<int>();

String BeforeStr = "<font color=\"red\">";

String AfterStr = "</font>";

String StringPad = "
";

String[] SplitValues;

int before, after;

for (int i = 0; i < HighValues.Length; i++)



{

if (HighValues == String.Empty) continue;


SplitValues = StringValue.Split(new string[] 
{ HighValues }, StringSplitOptions.None);

if (SplitValues.Length == 1) continue;

for (int j = 1; j < SplitValues.Length; j++)



{

before = after = 0;

for (int k = 0; k < j; k++)



{

before += SplitValues[k].Length;

after += SplitValues[k].Length;

}

before += (j - 1) * HighValues.Length;

after += j * HighValues.Length;


BeforePositions.Add(before);

AfterPositions.Add(after);

}

}


BeforePositions.Sort();

AfterPositions.Sort();

StringValue = InterceptString(StringValue, Len);

int AddLen = 0;

for (int i = 0; i < BeforePositions.Count; i++)



{

if (i > 0 && BeforePositions < AfterPositions[i - 1])



{

continue;

}


if ((StringValue.EndsWith(StringPad) && StringValue.Length - 3 >= BeforePositions + AddLen)

|| (!StringValue.EndsWith(StringPad) && StringValue.Length >= BeforePositions + AddLen))



{

StringValue = StringValue.Insert(BeforePositions + AddLen, BeforeStr);

AddLen += BeforeStr.Length;


if ((StringValue.EndsWith(StringPad) && StringValue.Length - 3 >= AfterPositions + AddLen)

|| (!StringValue.EndsWith(StringPad) && StringValue.Length >= AfterPositions + AddLen))



{

StringValue = StringValue.Insert(AfterPositions + AddLen, AfterStr);

AddLen += AfterStr.Length;

}

else



{

StringValue += AfterStr;

break;

}

}

}

if (StringValue.LastIndexOf(BeforeStr) > StringValue.LastIndexOf(AfterStr))



{

StringValue += AfterStr;

}

return StringValue;

}


浙公网安备 33010602011771号