首页 新闻 会员 周边 捐助

一个有关文字和图片的正则表达式

0
悬赏园豆:20 [已解决问题] 解决于 2012-11-03 09:35

想实现这样一个功能:

1.当内容没有图片时,很简单,即用<txt></txt>标签包含内容:<txt>这里是内容...</txt>

2.当内容有若干个图片时,文字和图片转换成这样:

  

<txt>内容。。。。</txt><img>图片地址</img><txt>后面的内容。。。</txt><img>图片地址。。。</img><txt>后面的内容。。。</txt>

也就是文字用<txt></txt>替换,图片用<img>图片地址</img>替换

我加个示例吧:

原内容:

soicjodfs<img src='1.jpg'/>aaabbcbcd<img src='2.jpg'/>sdfnnnnnn

要实现的效果

<txt>soicjodfs</txt><img>1.jpg</img><txt>aaabbcbcd</txt><img>2.jpg</img><txt>sdfnnnnnn</txt>

 

 

 

 

iQingHan的主页 iQingHan | 初学一级 | 园豆:19
提问于:2012-11-01 11:27
< >
分享
最佳答案
0

能不能描述得再详细点。。

后面的内容。。是啥意思。。或许你给个大概的事例看看。。

<txt>内容。。。。</txt><img>图片地址</img><txt>后面的内容。。。</txt><img>图片地址。。。</img><txt>后面的内容。。。</txt>
收获园豆:20
Poiuyt_cyc | 初学一级 |园豆:24 | 2012-11-01 11:33

我加了个示例,应该会清楚多了,请高手帮忙

iQingHan | 园豆:19 (初学一级) | 2012-11-01 12:13

@就是书生: 

//原字符串
            string st = "soicjodfs<img src='1.jpg'/>aaabbcbcd<img src='2.jpg'/>sdfabcde<img src='2.jpg'/>按时的撒旦";
            //处理后的字符串
            StringBuilder st2 = new StringBuilder("<txt>");
            for (int i = 0; i < st.Length-1; i++)
            {
                st2.Append(st[i]);    
                if (st.Length == 4 + i)
                {
                    st2.Append(st.Substring(i+1));
                    st2.Append("</txt>");
                    break;
                }
                if (st[i + 1].ToString().Equals("<") & st[i + 2].ToString().Equals("i") & st[i + 3].ToString().Equals("m") & st[i + 4].ToString().Equals("g"))
                {
                    st2.Append("</txt>");
                    st2.Append("<img>");
                    for (int j = i + 11; j < st.Length; j++)
                    {
                        if (st[j].ToString().Equals("'") & st[j + 1].ToString().Equals("/") & st[j + 2].ToString().Equals(">"))
                        {
                            i = j + 2;
                            break;
                        }
                        else
                        {
                            st2.Append(st[j]);
                        }
                    }
                    st2.Append("</img>");
                    if (!(i == st.Length - 1))
                    {
                        st2.Append("<txt>");
                    }

                }

            }

 

测试过没问题..

无论是soicjodfs<img src='1.jpg'/>aaabbcbcd<img src='2.jpg'/>sdfnnnnnn

或者是soicjodfs<img src='1.jpg'/>aaabbcbcd<img src='2.jpg'/>

2种都能行..但内容中别出现<img 或src=' 或'/>这样的内容就没问题了

Poiuyt_cyc | 园豆:24 (初学一级) | 2012-11-01 15:09

@就是书生:  我的方法比较笨。。。把整个字符串都遍历了一次。。。 但感觉效率应该挺好的,手工的给它加了一下速,应该比正则效率高些。前辈都说正则效率低。(其实我是正则小白)

Poiuyt_cyc | 园豆:24 (初学一级) | 2012-11-01 15:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册