javascript - 给定一个截尾字符串和一个截尾元音字符串,返回原始的未截尾字符串

标签 javascript

 <script>
  var immutable = "";
  var count = 0;
  function uncensor(str1, str2) {
    for (var i = 0; i < str.length; i++) {
      if (str1[i] == "*") {
        immutable =
          str1.slice(0, i) +
          str2[count] +
          str1.slice(i + 1, str1.length - 1);
        count++;
      }
    }
    return immutable;
  }

  document.write(uncensor("Wh*r* d*d my v*w*ls g*?", "eeioeo"));

  // uncensor("Wh*r* d*d my v*w*ls g*?", "eeioeo")
  </script>

我的逻辑是在每次出现 "*" 时更新不可变变量。所以在循环结束时所有的"*"都会被str2中的字符一个一个替换。

我希望结果是“Where did my vowels go?

没有输出。

最佳答案

您可以尝试遍历输入并在数组中捕获结果:

  var immutable = "";
  var count = 0;
  function uncensor(str1, str2) {
    let result = [];
    for (var i = 0; i < str1.length; i++) {
      if (str1[i] == "*") {
        result.push(str2[count++]);
      } else {
        result.push(str1[i]);
      }
    }
    return result.join("");
  }

console.log(uncensor("Wh*r* d*d my v*w*ls g*?", "eeioeo"));

编辑:字符串是 immutable 的事实意味着每次您使用 splice+ 字符时,您都会创建一个新字符串。如果你想将你的方法与 splice 一起使用,你需要将 str 的部分与 str2 中的字符连接起来,如下所示,但是上面的解决方案应该是性能更高:

  var result = "";
  var count = 0;
  var lastCensored = 0;
  function uncensor(str1, str2) {
    for (var i = 0; i < str1.length; i++) {
      if (str1[i] == "*") {
        result +=
          str1.slice(lastCensored, i) +
          str2[count++];
        lastCensored = i + 1;
      }
    }
    return result + str1.slice(lastCensored, str1.length);
  }

  document.write(uncensor("Wh*r* d*d my v*w*ls g*?", "eeioeo"));

  // uncensor("Wh*r* d*d my v*w*ls g*?", "eeioeo")

关于javascript - 给定一个截尾字符串和一个截尾元音字符串,返回原始的未截尾字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231116/

相关文章:

javascript - Controller 函数未被调用

javascript - 如何检测浏览器控制台中的按键事件?

javascript - 用户单击标记图标时如何更改 Google map 标记图标

javascript - 将 mozrequestfullscreen() 与多层 Canvas 一起使用?

javascript - 如何在 Bookshelf.js 中进行嵌套插入

javascript - 找到位于 ARC 的起始 Angular 和结束 Angular 之间的点。

javascript - slick.js 幻灯片的宽度在哪里计算?

javascript - NodeJS 代码不工作

javascript - 添加内容后如何删除内容textarea? jQuery

javascript - 如何更改链接的文本