截取字符串并且关键字颜色显示

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;
        }
 
 
posted @ 2009-08-19 20:15  oraclejava  阅读(475)  评论(0)    收藏  举报