2016-04-20 2 views
0

Ich habe ein Stück von sehr einfachen Code:Javascript vergleichen String nach einer Ersetzen-Funktion nicht funktioniert

var b = "HelloWorld"; 
var a = b.replace(/([A-Z])/g, ' $1'); 
alert(a); 
if(a == "Hello World") { 
a += " yes"; 
} 
else { 
a += " no"; 
} 

a ist immer „Hallo Welt“, die erwartet wird, aber wenn Aussage nicht erkennen kann, und das Ergebnis ist "Hallo Welt nein". Dies funktioniert nicht, wenn ich die Funktion zum Ersetzen entfernen.

Irgendwelche Hinweise?

Antwort

3

Das tatsächliche Ergebnis der Zeichenfolge nach replace ist ' Hello World' beginnt mit einem Leerzeichen. Ihre Regex fügt das Leerzeichen vor allen Großbuchstaben ein.

Versuchen mit

if(a == " Hello World") { 
4

Ihre ersetzen vergleichen ein Leerzeichen vor Großbuchstaben legt, so gibt es einen Raum vor H und W. So wird diese Arbeit:

if (a == " Hello World") { 
    a += " yes"; 
} else { 
    a += " no"; 
} 
1

var b = "HelloWorld"; 
 
    var a = b.replace(/([A-Z])/g, ' $1'); 
 
    var c = "Hello World"; 
 
    alert(a.length + ' ' + c.length); 
 

 
    if(a == "Hello World") { 
 
     a += " yes"; 
 
    } 
 
    else { 
 
     a += " no"; 
 
    }

Die Länge a ist 12 und Länge von "Hallo Welt" ist 11.