在asp.NET中字符串替换的五种方法第1/2页
程序员文章站
2023-08-23 19:33:34
1:使用string.replace函数替换,但不支持大小写。 2:正则system.text.regex替换,用regexpoption修改是否支持大小写。 3:在小数据...
1:使用string.replace函数替换,但不支持大小写。
2:正则system.text.regex替换,用regexpoption修改是否支持大小写。
3:在小数据的情况下,使用string.substring和+可以实现间接替换。
4:导入microsoftvisualbasicruntime(microsoft.visualbasic.dll)使用strings.replace速度很快。
5:参照反射reflector.filedisassembler配合strings.splitandstrings.join等实现,速度同5。
一下介绍一种算法,类似kmp算法。有兴趣的参照研究下。
以下为引用的内容:
privatestaticstringreplaceex(stringoriginal,
stringpattern,stringreplacement)
{
intcount,position0,position1;
count=position0=position1=0;
stringupperstring=original.toupper();
stringupperpattern=pattern.toupper();
intinc=(original.length/pattern.length)*
(replacement.length-pattern.length);
char[]chars=newchar[original.length+math.max(0,inc)];
while((position1=upperstring.indexof(upperpattern,
position0))!=-1)
{
for(inti=position0;i<position1;++i)
chars[count++]=original[i];
for(inti=0;i<replacement.length;++i)
chars[count++]=replacement[i];
position0=position1+pattern.length;
}
if(position0==0)returnoriginal;
for(inti=position0;i<original.length;++i)
chars[count++]=original[i];
returnnewstring(chars,0,count);
}
2:正则system.text.regex替换,用regexpoption修改是否支持大小写。
3:在小数据的情况下,使用string.substring和+可以实现间接替换。
4:导入microsoftvisualbasicruntime(microsoft.visualbasic.dll)使用strings.replace速度很快。
5:参照反射reflector.filedisassembler配合strings.splitandstrings.join等实现,速度同5。
一下介绍一种算法,类似kmp算法。有兴趣的参照研究下。
以下为引用的内容:
复制代码 代码如下:
privatestaticstringreplaceex(stringoriginal,
stringpattern,stringreplacement)
{
intcount,position0,position1;
count=position0=position1=0;
stringupperstring=original.toupper();
stringupperpattern=pattern.toupper();
intinc=(original.length/pattern.length)*
(replacement.length-pattern.length);
char[]chars=newchar[original.length+math.max(0,inc)];
while((position1=upperstring.indexof(upperpattern,
position0))!=-1)
{
for(inti=position0;i<position1;++i)
chars[count++]=original[i];
for(inti=0;i<replacement.length;++i)
chars[count++]=replacement[i];
position0=position1+pattern.length;
}
if(position0==0)returnoriginal;
for(inti=position0;i<original.length;++i)
chars[count++]=original[i];
returnnewstring(chars,0,count);
}
1