JavaScript字符串替换不起作用

时间:2017-01-14 19:18:46

标签: javascript arrays string replace charat

我正在编写一个程序,它接受三个参数,例如,sentence,wordtoreplace,toReplaceWith。

程序应该返回带有wordtoreplace的句子字符串,应该用toReplaceWith替换。如果wordtoreplace是一个大写词,那么被替换的世界也应该被大写。我尝试了很多次,但我的代码不起作用。请帮助。

function myReplace(str, before, after) {
  var words = str.split(" ");
  var indexOfWord = words.indexOf(before);
  
    if ( before.charAt(0) === before.charAt(0).toUpperCase ) {
      after = capitalize(after);
    }
   str = str.replace(new RegExp(before), after);
   
      function capitalize( word ) {
      return word.charAt(0).toUpperCase() + word.slice(1);
      }
   return str.replace(new RegExp(after, 'i', 'g'), after);;
}

myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");

3 个答案:

答案 0 :(得分:1)

您应该在toUpperCase声明

中调用if

if ( before.charAt(0) === before.charAt(0).toUpperCase() ) { after = capitalize(after); }

答案 1 :(得分:1)

试试这个:

function myReplace(str, before, after) {
  var words = str.split(" ");
  var indexOfWord = words.indexOf(before);

  if ( before.charAt(0) == before.charAt(0).toUpperCase() ) {
     after = capitalize(after);
  }
  str = str.replace(new RegExp('\\b' + before + '\\b'), after);

  function capitalize( word ) {
    return word.charAt(0).toUpperCase() + word.slice(1);
  }
  return str.replace(new RegExp(after, 'i', 'g'), after);;
}

您可以在字符串中使用'\\ b'进行查找。 您可以在此处测试代码:http://www.w3schools.com/code/tryit.asp?filename=FBQS72BU7H97

这里的文件: http://www.w3schools.com/jsref/jsref_regexp_begin.asp

答案 2 :(得分:0)

您错过了.toUpperCase()声明中if函数的括号。

我也试图让你的版本更清洁,也许它会帮助你。

function replace(sentence, wordToReplaced, newWord) {
  if (sentence.includes(wordToReplaced)) {
    var char = wordToReplaced.charAt(0);
    if (char === char.toUpperCase()) {
      newWord = newWord.charAt(0).toUpperCase() + newWord.slice(1);
    }
    sentence = sentence.replace(wordToReplaced, newWord);
  }
  return sentence;
}