asp.net C#中的文本替换算法

olymi 2012-10-11 10:26:47
要替换html中的<script>标签,凡是遇到相邻的script,就把它们合并并换成程序输出的,比如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="themes/KeepItSimple/css/reset.css" rel="stylesheet" type="text/css" />
<script src="Assets/Scripts/comment.js" type="text/javascript"></script>
<script src="Assets/Scripts/cookies.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<script src="Assets/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="Assets/Scripts/jquery.validate-vsdoc.js" type="text/javascript"></script>
<js>
<script src="js/cookies.js" type="text/javascript"></script>
<script src="js/comment.js" type="text/javascript"></script>
</js>
<js>
<script src="js/comment.js" type="text/javascript"></script>
<script src="js/cookies.js" type="text/javascript"></script>
<script src="Assets/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="Assets/Scripts/jquery.validate-vsdoc.js" type="text/javascript"></script>
</js>
<js>
<script src="Assets/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="Assets/Scripts/jquery.validate-vsdoc.js" type="text/javascript"></script>
</js>
</div>
</form>
</body>
</html>

要换成

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="themes/KeepItSimple/css/reset.css" rel="stylesheet" type="text/css" />
<script src="..." type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<script src=".." type="text/javascript"></script>
<js>
<script src=".." type="text/javascript"></script>
</js>
<js>
<script src=".." type="text/javascript"></script>
</js>
<js>
<script src="..." type="text/javascript"></script>
</js>
</div>
</form>
</body>
</html>

也就是说只要是相邻的(一个script后面还是一个script)就把它们合并,合并算法我已经有了,但就是合并第一个后第二个index就变了,用substring合并第二时就会出现在不应该出现的位置,以此类推,最后还有出现溢出出错。。如何算法?
...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
olymi 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

不就是把<js>对间的内容替换吗
C# code

StreamReader reader = new StreamReader("c:\\temp\\1.txt",Encoding.Default);
string source = reader.ReadToEnd();
Regex reg = new Regex(@……
[/Quote]现在那个js 不要了,其实这只是js gzip的,在用户不设置成gzip的话,输出一个<js>标签很难看,因为程序需要,不可能把标签去除.所以现在把只要出现script 就gzip,如果是几个相邻就一起gzip.之前包含在<js>里边好办,现在有点难.
bdmh 2012-10-11
  • 打赏
  • 举报
回复
不就是把<js>对间的内容替换吗

StreamReader reader = new StreamReader("c:\\temp\\1.txt",Encoding.Default);
string source = reader.ReadToEnd();
Regex reg = new Regex(@"(?is)(?<=<js>).*?(?=</js>)");
source = reg.Replace(source, @"<script src=""..."" type=""text/javascript""></script>""");
oh51888 2012-10-11
  • 打赏
  • 举报
回复
你都没发出来合并的算法,大家怎么给你找错?= =!

61,654

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧