【问题标题】:replacing multiple letter in a string javascript替换字符串中的多个字母javascript
【发布时间】:2016-01-03 06:34:42
【问题描述】:

您好,我正在寻找比较两个字符串,并将字符串 B 中的所有小写字母(字符串 A 中的大写字母)改为大写,我的代码的问题是它只会像这样更改最后一个字母

var i;
var x;

function switchItUp(before, after) {
  for (i = 0; i < before.length; i++) {
    if (before.charAt(i) == before.charAt(i).toUpperCase()) {
      x = after.replace(after.charAt(i), after.charAt(i).toUpperCase());

    }
  }

  console.log(x);
}




switchItUp("HiYouThere", "biyouthere");

这将导致“biyouThere”以任何方式将其更改为“HiYouThere”?

【问题讨论】:

  • 预期输出应该是 HiYouThere 还是 BiYouThere?
  • 我期待 BiYouThere
  • 好的。然后在开始循环之前将 'after' 的值分配给 x,并仅在循环内部使用 x 而不是 'after'。
  • 它有效,但它在控制台中多次显示字符串(对于每次迭代)
  • 仅在循环外打印。

标签: javascript replace charat


【解决方案1】:

我已正确修改您的代码以使其正常工作。您需要在每个循环中将操作应用于相同的变量 x,而不是之后。

function switchItUp(before, after) {
  var x = after;
  for (i = 0; i < before.length; i++) {
    if (before.charAt(i) == before.charAt(i).toUpperCase()) {
      x = x.replace(after.charAt(i), after.charAt(i).toUpperCase());

    }
  }

  console.log(x);
}

【讨论】:

  • 它有效,但它在控制台中多次显示字符串(对于每次迭代)
  • 它只为我显示了一次迭代:jsbin.com/dotejenoho/1/edit?js,console
  • 为什么要引入另一个变量x?此外,如果第一个字符串中的对应字符是数字,这会将第二个字符串中的所有字符都转换为大写。
【解决方案2】:

您必须分配每个更改。现在可以使用了

var i;
var x;

function switchItUp(before, after) {
  for (i = 0; i < before.length; i++) {
    if (before.charAt(i) == before.charAt(i).toUpperCase()) {
      x = after.replace(after.charAt(i), after.charAt(i).toUpperCase());
      after = x; 
      //console.log("inside"+x);
    }
  }

  console.log(x);
}

switchItUp("HiYouThere", "biyouthere");

【讨论】:

  • 它有效,但它在控制台中多次显示字符串(对于每次迭代)
  • 没问题,它只是迭代循环中的一个 console.log :)
  • after的基础上修改x,然后将after设置回x,看起来很笨拙。这与仅仅说 after = after.replace... 有何不同/更好?
  • 是的..它似乎..为了更好地说明他们的错误..我做到了...感谢您的建议...
【解决方案3】:

这是代码:

function switchItUp(before, after) {
  for (var i = 0; i < before.length; i++) {
    if (before.charAt(i) == before.charAt(i).toUpperCase()) {
      after = after.replace(after.charAt(i), after.charAt(i).toUpperCase());
    }
  }
  return after;
}

var after = switchItUp("HiYouThere", "biyouthere");

document.body.innerHTML+='<p style="color: black;">'+ after + '<p/>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2012-07-31
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多