if语句中的变量未定义

时间:2016-08-09 19:07:03

标签: javascript algorithm

我试图解决一个算法" Seach and Replace"其中说明:

  

使用参数执行搜索并替换句子   提供并返回新句子。

     

第一个参数是执行搜索和替换的句子。

     

第二个参数是你要替换的词(之前)。

     

第三个参数是你将用第二个参数替换第二个参数   (后)。

     

注意:更换时保留原始单词的大小写   它。例如,如果您的意思是替换“#34; Book"用这个词   " dog",它应该替换为" Dog"

所以我试图在原始单词大写的情况下通过测试,因此替换单词也会变大。但我的if语句中的变量是未定义的。请解释一下!我的代码如下:

function myReplace(str, before, after) {
  var newString = str.replace(before, after);
  if (before[0]===before[0].toUpperCase) {
    var capWord = after[0].toUpperCase+after(1);
    console.log(capWord);
    newString = str.replace(before, capWord);
    return newString;
  }
  return newString;
}

myReplace("He is Sleeping on the couch", "Sleeping", "sitting");

Capword未定义,为什么?我该如何绕过这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

  • 它将是toUpperCase() - 转换为大写。它是一个功能,因此需要被调用。
  • after.substring(1) - 在第一个字母后面提取子字符串。

function myReplace(str, before, after) {
  var newString = str.replace(before, after);
  if (before[0]===before[0].toUpperCase()) {
    var capWord = after[0].toUpperCase()+after.substring(1);
    newString = str.replace(before, capWord);
    return newString;
  }
  return newString;
}

console.log(myReplace("He is Sleeping on the couch", "Sleeping", "sitting"));