Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript替换子字符串不';如果字符串重复,则无法正常工作_Javascript_Replace_Substring_Slice_Substr - Fatal编程技术网

Javascript替换子字符串不';如果字符串重复,则无法正常工作

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

我对substring/substr/slice有一个非常简单的问题。我的代码非常复杂,所以我不会在这里发布,但这里是问题的简化版本:

例如,如何将text.substring(5,10)更改为“Something”

如果我尝试

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]之间的字符串”

    但是,为了满足您所描述的需要(替换
    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"
        );