有一个关键字数组string[],内有n个关键字(中文)
有一个目标字符串,内有<br> <font>等html代码
想要替换掉目标字符串中出现的关键字(只要是在string[]中出现的),同时能忽略掉html代码中含在< >中的内容。
比如说 string[] 中有 “上海”“北京”“天津”"abc"
目标字符串为 "上海在北京和天津的<br >南边<a href="#">ddd</a>"统一替换为"<a>上海</a>在<a>北京</a>和<a>天津</a>的<br >南边<a href="#">ddd</a>"我现在用循环的方法解决(但是没有办法解决忽略< >中的办法)。但是这种情况能用正则表达式一次解决掉吗?请高手赐教。
有一个目标字符串,内有<br> <font>等html代码
想要替换掉目标字符串中出现的关键字(只要是在string[]中出现的),同时能忽略掉html代码中含在< >中的内容。
比如说 string[] 中有 “上海”“北京”“天津”"abc"
目标字符串为 "上海在北京和天津的<br >南边<a href="#">ddd</a>"统一替换为"<a>上海</a>在<a>北京</a>和<a>天津</a>的<br >南边<a href="#">ddd</a>"我现在用循环的方法解决(但是没有办法解决忽略< >中的办法)。但是这种情况能用正则表达式一次解决掉吗?请高手赐教。
{
for (int i = 0; i < source.Length; i++)
{
if (rpstr.IndexOf(source[i]) != -1)
{
int start = rpstr.IndexOf(source[i]);
if (rpstr.Substring(start, 1) == ">")
{
int end1 = rpstr.Substring(0, start).LastIndexOf("<a");
int end2 = rpstr.Substring(0, start).LastIndexOf("</a");
if (end1 > end2)
{
rpstr = rpstr.Replace(rpstr.Substring(0, start).Substring(end1), "<a>");
}
}
else
{
rpstr = rpstr.Replace(source[i], "<a>" + source[i]+"</a>");
}
}
}
return rpstr;
}
{
if(str.IndexOf(arr[i]) != -1)
{
string str2="<a>"+arr[i].ToString()+"</a>";
str.replace(arr[i],str2);
}
}
private string ReplaceStr(string[] source,string rpstr)
{
for (int i = 0; i < source.Length; i++)
{
if (rpstr.IndexOf(source[i]) != -1)
{
int start = rpstr.IndexOf(source[i]);
if (start > 0)
{
if (rpstr.Substring(start - 1, 1) == ">")
{
int end1 = rpstr.Substring(0, start).LastIndexOf("<a");
int end2 = rpstr.Substring(0, start).LastIndexOf("</a>");
if (end1 > end2)
{
rpstr = rpstr.Replace(rpstr.Substring(0, start).Substring(end1), "<a>");
//Response.Write(rpstr.Substring(0, start-1).Substring(end1)+"<br>");
}
else
{
rpstr = rpstr.Replace(source[i], "<a>" + source[i] + "</a>");
}
}
else
{
rpstr = rpstr.Replace(source[i], "<a>" + source[i] + "</a>");
}
}
else
{
rpstr = rpstr.Replace(source[i], "<a>" + source[i] + "</a>");
}
}
}
return rpstr;
}
string[] source=new string[]{"上海","北京","天津","abc"};
string rpstr="上海在<a href='xxx.aspx'>北京</a>和<a href='xxx.htm'>呵呵</a>天津的<br >南边<a href='#'>abc</a>";
Response.Write(ReplaceStr(source, rpstr));打印出:
<a>上海</a>在<a>北京</a>和<a href='xxx.htm'>呵呵</a><a>天津</a>的<br >南边<a>abc</a>
http://www.dotnetjunkies.com/Tutorial/195E323C-78F3-4884-A5AA-3A1081AC3B35.dcik
一个很好的教程和代码下载
for(string s in keys)
if(str.IndexOf(s+">")==-1)
str = str.Replace(s,"<a>"+s+"</a>")