我正在编写一个程序,它接受三个参数,例如,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");
答案 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;
}