2016-08-09 3 views
-1

Ich versuche, einen Algorithmus „Seach und Ersetzen“ zu lösen in der es heißt:Variable ist nicht definiert, innerhalb if-Anweisung

eine Suche durchführen und auf dem Satz ersetzt die Argumente mit zur Verfügung gestellt und den neuen Satz zurückzukehren.

Das erste Argument ist der Satz, der die Suche ausführen und ersetzen soll.

Zweites Argument ist das Wort, das Sie ersetzen werden (vorher).

Drittes Argument ist, was Sie das zweite Argument mit (nach) ersetzen werden.

HINWEIS: Bewahren Sie den Fall des ursprünglichen Wortes auf, wenn Sie ersetzen. Zum Beispiel, wenn Sie meinen, das Wort „Buch“ mit dem Wort „Hund“ zu ersetzen, sollte es als „Hund“ ersetzt

Also versuche ich einen Test zu bestehen, wenn ursprüngliches Wort wird groß geschrieben, so Das ersetzte Wort wird ebenfalls in Großbuchstaben geschrieben. Aber meine Variable innerhalb der if-Anweisung ist undefiniert. Bitte erkläre mich! Mein Code folgt:

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"); 

Capwort ist undefiniert, warum? Und wie kann ich dieses Problem umgehen? Vielen Dank!

+1

Sie etwas fehlt: toUpperCase => toUpperCase() – BenM

+0

ich ein solches Ergebnis nicht, wenn ich Ihren Code ausführen. Ich bekomme "Er sitzt auf der Couch". – Malvolio

+0

'+ nach (1);' sollte '+ nach [1] sein;' ... Dies ist ein kleiner typografischer Fehler imo und ich schließe mich als solcher. –

Antwort

1
  • Es wird toUpperCase() - Konvertiert in Großbuchstaben. Es ist eine Funktion und muss daher aufgerufen werden.
  • aftersubstring (1) - Extrahiere den Teilstring wie er nach dem ersten Buchstaben ist.

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"));

Verwandte Themen