想实现这样一个功能:
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>
能不能描述得再详细点。。
后面的内容。。是啥意思。。或许你给个大概的事例看看。。
<txt>内容。。。。</txt><img>图片地址</img><txt>后面的内容。。。</txt><img>图片地址。。。</img><txt>后面的内容。。。</txt>
我加了个示例,应该会清楚多了,请高手帮忙
@就是书生:
//原字符串 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=' 或'/>这样的内容就没问题了
@就是书生: 我的方法比较笨。。。把整个字符串都遍历了一次。。。 但感觉效率应该挺好的,手工的给它加了一下速,应该比正则效率高些。前辈都说正则效率低。(其实我是正则小白)