剪切HTML字符串而不破坏HTML标签 [英] Cutting HTML strings without breaking HTML tags

查看:139
本文介绍了剪切HTML字符串而不破坏HTML标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何编写一个函数,该函数可以在使用HTML标记的情况下将字符串剪切为N长度的字符串,而不会在执行HTML标记时破坏HTML标记。

返回的字符串不需要精确到N个字符。它可以在标记位于N长字符串的边缘之前或之后剪切它。

 访问< a href = www.htz.hr>克罗地亚< / A>这个夏天。 

CutIt(9)应该返回 p>

 访问

 访问< a href =www.htz.hr>克罗地亚< / a> 


解决方案

我解决了这个问题, ;

 静态字符串CutIt(string s,int limit)
{
if(s.Length< ;限制)返回s;

int okIndex = 0;
bool inClosingTag = false;
int numOpenTags = 0;

for(int i = 0; i {
if(s [i] =='<')
{
if(s [i + 1] =='/')
{
inClosingTag = true;
}
else
{
numOpenTags ++; (s [i] =='>')
{
if(s [i-1] =='/')


if
{
numOpenTags--;
}
if(inClosingTag)
{
numOpenTags--;
}
}

if(numOpenTags == 0)okIndex = i;

}
return s.Substring(0,okIndex + 1);
}


How to write a function that can cut a string with HTML tags to an N-length string without breaking HTML tags while doing it.

The returned string doesn't need to be exactly N characters long. It can cut it before or after tag that is on the edge of N-long string.

Visit <a href="www.htz.hr">Croatia</a> this summer.

CutIt(9) should return

Visit

or

Visit <a href="www.htz.hr">Croatia</a>

解决方案

I solved the problem so here is the code in c#;

static string CutIt(string s, int limit)
{
    if (s.Length < limit) return s;

    int okIndex = 0;
    bool inClosingTag = false;
    int numOpenTags = 0;

    for (int i = 0; i < limit; i++)
    {
        if (s[i]=='<')
        {
            if (s[i+1]=='/')
            {
                inClosingTag = true;    
            }
            else
            {
                numOpenTags++;   
            }
        }
        if (s[i]=='>')
        {
            if (s[i-1]=='/')
            {
                numOpenTags--;
            }
            if (inClosingTag)
            {
                numOpenTags--;
            }
        }

        if (numOpenTags == 0) okIndex = i;

    }
    return s.Substring(0, okIndex + 1);
}

这篇关于剪切HTML字符串而不破坏HTML标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆