当前位置: 首页 > 知识库问答 >
问题:

Javascript使用。在搜索的特定索引处替换()

隗俊誉
2023-03-14

有没有一个函数可以在字符串的特定索引处替换一个字符串内的一个字符串一次?示例:

var string1="my text is my text and my big text";
var string2="my";
string1.replaceAt(string2,"your",2);

结果输出将是“我的文本是我的文本,你的大文本”

共有3个答案

方韬
2023-03-14

这里有一个原型版本

String.prototype.replaceAt = function(str1,str2,pos) {
  let count = 0;
  let re = new RegExp(str1,"g");
  return this.replace(re, function() {
    return (count++ === pos) ? str2 : str1;
  });
}
console.log("my text is my text and my big text".replaceAt("my","your",2))
东郭存
2023-03-14

没有内置的方法可以做到这一点,但是您可以利用< code >这一事实。replace()可以传递一个函数:

let count = 0;
console.log("my text is my text and my big text".replace(/my/g, function() {
  if (count++ === 2) return "your";
  return "my";
}));
谭煜
2023-03-14

您可以通过一点点操作来执行此操作,而不需要任何正则表达式。

我使用这个函数来获取一个字符串中另一个字符串的位置(索引)。

从那里开始,它就像从开始到找到的索引返回一个子串一样简单,注入您的替换,然后返回字符串的其余部分。

function replaceAt(s, subString, replacement, index) {
  const p = s.split(subString, index+1).join(subString);
  return p.length < s.length ? p + replacement + s.slice(p.length + subString.length) : s;
}

console.log(replaceAt("my text is my text and my big text", "my", "your", 2))
console.log(replaceAt("my text is my text and that's all", "my", "your", 2))
console.log(replaceAt("my text is my my my my text", "my", "your", 2))
 类似资料:
  • 问题内容: 我有一个字符串,假设我需要替换索引3处的char。如何通过指定索引来替换char? 我需要类似的东西 问题答案: 在JavaScript中,字符串是 不可变的 ,这意味着您可以做的最好的事情是创建一个具有更改内容的新字符串,然后将变量分配为指向它。 您需要自己定义函数: 并像这样使用它:

  • 问题内容: 如果我有清单: 然后声明另外两个列表: 我怎么可以作为指数的元素,然后设置相应的元素来,即运行后,应该是。 显然,我可以通过for循环来做到这一点: 但是还有其他方法吗?我可以以某种方式使用吗? 问题答案: 您的代码最大的问题是它不可读。Python代码规则第一,如果它不可读,没人会花足够长的时间看得出来所有有用的信息。始终使用描述性变量名。几乎没有发现代码中的错误,让我们以好名字,慢

  • 问题内容: 我正在尝试替换字符串中特定索引处的字符。 我正在做的是: 这给出了一个错误。有什么方法可以做到这一点? 问题答案: 字符串在Java中是不可变的。你不能更改它们。 你需要创建一个新字符串并替换字符。 或者,你可以使用StringBuilder:

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 问题内容: 我有一个包含两个“ 0”(str)的字符串,我只想删除索引4处的“ 0”(str) 我尝试调用.replace,但是显然删除了所有的“ 0”,并且我找不到能为我删除第4位字符的函数。 有人对我有提示吗? 问题答案: 使用切片,重建字符串减去要删除的索引:

  • 当我搜索“#”等特殊字符时,没有结果出现。 请注意,我已经转义了查询字符串。 然而,当与“c#”这样的字母组合时,Lucene找到了这个词。 有没有办法搜索单个特殊字符? 这是我的片段: