Exemplo n.º 1
0
    /// <summary>
    /// 下划线解析器
    /// </summary>
    /// <param name="str">原字符串</param>
    /// <returns></returns>
    public string ParsingUnderLineEx(string content)
    {
        m_UnderLineInfos.Clear();


        string str         = content;
        string combineText = string.Empty;

        while (RichTextConst.UnderLineRegex.IsMatch(str))
        {
            Match match = RichTextConst.UnderLineRegex.Match(str);

            //前半截
            combineText = str.Substring(0, match.Index - 0);
            //下划线的内容
            string tempStr = match.Groups[1].Value;
            Debug.LogError(str);

            int fitterLen = 0;

            foreach (Match matchFitter in RichTextConst.FitterRegex.Matches(tempStr))
            {
                if (matchFitter.Value.Contains("link"))
                {
                    fitterLen += matchFitter.Length * 4;
                }
            }

            var _underLineInfo = new UnderLineInfo
            {
                startIndex = combineText.Length * 4,                   // 超链接里的文本起始顶点索引
                endIndex   = (tempStr.Length + combineText.Length) * 4 //- fitterLen, //终点索引
            };
            m_UnderLineInfos.Add(_underLineInfo);

            //拼接内容
            combineText += tempStr;
            int index = match.Index + match.Length;
            str         = combineText + str.Substring(index, str.Length - index);
            combineText = string.Empty;
        }

        return(str);;
    }
Exemplo n.º 2
0
    /// <summary>
    /// 下划线解析器
    /// </summary>
    /// <param name="str">原字符串</param>
    /// <returns></returns>
    public string ParsingUnderLine(string content)
    {
        m_UnderLineInfos.Clear();



        //取出下划线位置
        foreach (Match match in RichTextConst.UnderLineRegex.Matches(content))
        {
            //计算嵌套剔除的内容
            string temp        = match.Value;
            string combineText = string.Empty;

            int cor = match.Index;

            while (temp.Contains("\n"))
            {
                int length = temp.IndexOf("\n");
                combineText = temp.Substring(0, length);

                var _underLineInfo = new UnderLineInfo
                {
                    startIndex = cor * 4,                        // 超链接里的文本起始顶点索引
                    endIndex   = (combineText.Length + cor) * 4, //终点索引
                };
                m_UnderLineInfos.Add(_underLineInfo);
                length += 1;
                cor    += length;
                temp    = temp.Substring(length, temp.Length - length);
            }

            //信息
            var underLineInfo = new UnderLineInfo
            {
                startIndex = cor * 4,                 // 超链接里的文本起始顶点索引
                endIndex   = (temp.Length + cor) * 4, //终点索引
            };
            m_UnderLineInfos.Add(underLineInfo);
        }

        return(content);
    }