Javascript 使用for循环替换子字符串
我试图用“拒绝”一词替换子字符串。例如:如果原始字符串为“abcdefg”,而要替换的子字符串为“bcd”,则预期输出为“aDENIEDefg” 我不能使用Javascript 使用for循环替换子字符串,javascript,Javascript,我试图用“拒绝”一词替换子字符串。例如:如果原始字符串为“abcdefg”,而要替换的子字符串为“bcd”,则预期输出为“aDENIEDefg” 我不能使用.replace或其他任何东西,只能使用.substring 函数替换器(变量,替换){ 对于(设a=variable.length-1;a>=0;a--){ 对于(设b=replace.length-1;b>=0;b--){ 如果(替换[b]==变量[a]){ } } } } 我不知道下一步该做什么 下面是我的代码,用于从字符串中删除字符
.replace
或其他任何东西,只能使用.substring
函数替换器(变量,替换){
对于(设a=variable.length-1;a>=0;a--){
对于(设b=replace.length-1;b>=0;b--){
如果(替换[b]==变量[a]){
}
}
}
}
我不知道下一步该做什么
下面是我的代码,用于从字符串中删除字符
让stringToReturn=原始;
for(设a=toDelete.length-1;a>=0;a--){
对于(设b=original.length-1;b>=0;b--){
如果(原始[b]==删除[a]){
stringToReturn=stringToReturn.substring(0,b)+stringToReturn.substring(b+1,stringToReturn.length);
}否则{
继续;
}
}
}
警报(stringToReturn);
}
但是这次我不需要删除一个字符,而是找到一个子字符串来替换为拒绝。对于代码样式,我深表歉意。如果您知道要替换的子字符串的长度,那么您可以迭代该字符串并检查此长度的所有可能的子字符串,因为您正在通过“窗口”查看:
函数替换(完整、部分、占位符){
对于(设i=0;iconst source=“abcdefg”;
const target=“bcd”;
const replacer=“已拒绝”;
常量替换=(源、目标、替换)=>{
const position=source.indexOf(目标);
如果(位置==-1)返回源;
让输出=源.substr(0,位置)
输出+=替换程序
输出+=源.substr(位置+目标.length);
返回输出
}
常量replaceAll=(源、目标、替换)=>{
让输出=源;
做{
输出=替换(输出、目标、替换)
}
while(输出!==替换(输出、目标、替换))
返回输出;
}
日志(replace(源、目标、replace))
当然,最容易理解、干净、优雅的最佳解决方案是:
constreplaceall=(源、目标、替换程序)=>{
返回source.split(target).join(replacer)
}
由于您没有指定是要执行完全替换还是单数替换,因此我对其进行了修改,以允许使用布尔
参数,该布尔
表示是执行单数替换还是完全替换
const replaceword=“拒绝”;
const testword=“abcdef”;
const testword2=“abcdefdexyz”;
const testword3=“你好,我没有潜艇”;
//函数接受一个word参数—要对其进行替换的word
//以及要替换的子参数
//以及替换子字符串所用内容的替换参数
//replaceall是一个布尔值,用于确定是执行完全替换还是单数替换
函数替换(word、sub、replacement、replaceall){
replaceall=replaceall | | false;//默认为单数替换
//获取要替换的子对象的第一个索引
常量startOfReplace=word.indexOf(sub);
//获取要替换的子字符串的结束索引
const endOfReplace=开始替换+子长度-1;
//替换后保存新词的变量
让我们替换DWORD=“”;
//如果找到子字符串,则使用给定的替换字进行替换
如果(开始替换>-1){
for(设i=0;i }否则如果(i>=startofflace&&i你能用indexOf吗?是的!我能用indexOf。我考虑过如何使用indexOf,但我没有想出一个解决办法solution@thatdudemasquerade是否要替换多次出现的内容?例如,您的示例字符串是abcdefgbcd
,您应该获得aDENIEDefgDENIED
还是aDENIEDefgbcd
???如果源代码为abcdefgbcd
,则此操作失败,它只替换第一次出现的内容。您不能说replaceAll.normale String.replace适用于第一次occurrence@RyanWilson我没有意识到OP需要替换所有事件,但是也添加了这个案例。谢谢!我只是猜测OP需要替换所有事件,但是我会的我打赌你会想做一个完整的替换。非常感谢你!你的代码非常有用,我理解我的错误。@ThatDude伪装你不客气。很高兴帮助你!:)