Javascript替换子字符串不';如果字符串重复,则无法正常工作
我对substring/substr/slice有一个非常简单的问题。我的代码非常复杂,所以我不会在这里发布,但这里是问题的简化版本: 例如,如何将text.substring(5,10)更改为“Something” 如果我尝试Javascript替换子字符串不';如果字符串重复,则无法正常工作,javascript,replace,substring,slice,substr,Javascript,Replace,Substring,Slice,Substr,我对substring/substr/slice有一个非常简单的问题。我的代码非常复杂,所以我不会在这里发布,但这里是问题的简化版本: 例如,如何将text.substring(5,10)更改为“Something” 如果我尝试 text = text.replace(text.substring(5,10), "Something"); 结果将是“SomethingHello”,因为text.substring(0,5)也是“Hello”,但我想得到“HellosMething” 它对sli
text = text.replace(text.substring(5,10), "Something");
结果将是“SomethingHello”,因为text.substring(0,5)也是“Hello”,但我想得到“HellosMething”
它对slice()和substr()也不起作用,你能给我一个解决方案吗?基于下面的评论,我编写了函数
replacePartOfText()
此函数用于将两个索引(开始、结束)之间的所有文本替换为单词
text=“你好”
函数replacePartOfText(文本、开始、结束、单词){
结果=text.substring(0,开始)+word+text.substring(结束,text.length)
返回结果
}
text=replacePartOfText(text,5,10,“某物”)
console.log(text)/“HelloSomething”
基于下面的注释,我编写了函数replacePartOfText()
此函数用于将两个索引(开始、结束)之间的所有文本替换为单词
text=“你好”
函数replacePartOfText(文本、开始、结束、单词){
结果=text.substring(0,开始)+word+text.substring(结束,text.length)
返回结果
}
text=replacePartOfText(text,5,10,“某物”)
console.log(text)/“HelloMething”
请使用以上一个逻辑,我希望这将帮助你。谢谢请随意评论
请使用以上一个逻辑,我希望这将帮助你。谢谢请随时发表评论。首先,要让它发挥作用:
为满足这一需要:
“如何替换文本[a]和文本[b]之间的字符串”
但是,为了满足您所描述的需要(替换a
和b
之间文本后面的部分):
其次,
.substr()
和.replace()
工作正常。原因如下:
如果嵌套表达式命令,可能会更清楚:
text = text.replace(
text.substring(5,10), // Returns "Hello"
"Something"
);
所以你要做的是,按照以下顺序:
text.substring(5,10)
返回“Hello”
text.replace(“你好”,“某物”)
如预期的那样,返回“SomethingHello”.replace()
将替换您传递的第一个字符串或模式:
str.replace(regexp | substr,newSubStr |函数)
substr(模式)
要由newSubStr替换的字符串。它被视为逐字字符串,不被解释为常规字符串
表情。将仅替换第一次出现的
a
和b
之间文本后面的部分):
其次,
.substr()
和.replace()
工作正常。原因如下:
如果嵌套表达式命令,可能会更清楚:
text = text.replace(
text.substring(5,10), // Returns "Hello"
"Something"
);
所以你要做的是,按照以下顺序:
text.substring(5,10)
返回“Hello”
text.replace(“你好”,“某物”)
如预期的那样,返回“SomethingHello”.replace()
将替换您传递的第一个字符串或模式:
str.replace(regexp | substr,newSubStr |函数)
substr(模式)
要由newSubStr替换的字符串。它被视为逐字字符串,不被解释为常规字符串
表情。将仅替换第一次出现的
- 为什么不使用这些复杂的解决方案
var chars=“HelloHello HelloHello”.split(“”);
字符拼接(16,5,“某物”);
警报(字符连接(“”)代码>为什么不使用这些复杂的解决方案
var chars=“HelloHello HelloHello”.split(“”);
字符拼接(16,5,“某物”);
警报(字符连接(“”)代码>文本=文本有什么问题?子字符串(0,5)+“某物”代码>?我的代码很复杂,但真正的问题是:如果字符串之前已经出现在文本中,如何替换字符text[a]和text[b]之间的字符串?您的意思是要用其他文本替换两个索引值之间的所有文本吗,或者您希望在由两个索引值指定的子字符串中搜索,并仅在该子字符串中进行替换?我可以想出两种方法,不管搜索字符串是否出现在指定范围之外。我想替换两个索引之间的所有文本。确定。这在replace()方法中是可能的,但是只做text=text.substring(0,start)+“Something”+text.substring(end)会更简单
。text=text.substring(0,5)+“Something”有什么问题代码>?我的代码很复杂,但真正的问题是:如果字符串之前已经出现在文本中,如何替换字符text[a]和text[b]之间的字符串?您的意思是要用其他文本替换两个索引值之间的所有文本吗,或者您希望在由两个索引值指定的子字符串中搜索,并仅在该子字符串中进行替换?我可以想出两种方法,不管搜索字符串是否出现在指定范围之外。我想替换两个索引之间的所有文本。确定。这在replace()方法中是可能的,但是只做text=text.substring(0,start)+“Something”+text.substring(end)会更简单代码>。这不会给出HelloMething
。它将取代一切
function replaceStringPortion(text, start, end, replacement, trim) {
text = !!trim ? text.trim() : text;
var fragments = [
text.substr(0, start),
text.substr(start, end - start + 1),
text.substr(end + 1, text.length)
];
fragments[1] = replacement;
return fragments.join('');
}
function replaceAfterStringPortion(text, start, end, replacement, trim) {
text = !!trim ? text.trim() : text;
var fragments = [
text.substr(0, start),
text.substr(start, end - start + 1),
text.substr(end + 1, text.length)
];
fragments[2] = replacement;
return fragments.join('');
}
text = text.replace(
text.substring(5,10), // Returns "Hello"
"Something"
);