2016-05-09 14 views
1

Ich vergleiche zwei string.Ich lese String 1 dh expectedResult von excelsheet und String 2 ie actualResult ich bekomme von der Webseite mit "getElementByXPath (" errorMsg_userPass ") .getText();sogar zwei Zeichenfolgen sind gleich, aber wenn Vergleichsergebnis falsch kommen

aber wenn ich zwei String zu, obwohl sie gleiches Ergebnis eines Vergleichs kommen falsch dh sind, sind sie nicht gleich

enter image description here

ich weiß nicht, warum es passiert ist. wie dieses. Bitte Hilfe

Antwort

0

Verwenden Sie trim(), um führende und nachfolgende Leerzeichen zu entfernen !!

+0

Er ist bereits das zu tun. Aber ich denke, du meinst das im assertEquals-Teil. Aber es würde nicht erklären, warum er sowieso in diesen Zweig des Codes kommt (früher! (Actual.trim()). Equals (expected.trim())). –

+0

ja und auch versuchen, tun 'equalsIgnoreCase()' stattdessen gleich !! –

+0

Nun, was, wenn er den Fall überprüfen wollte? Ich möchte, dass meine Fehlermeldungen richtig geschrieben werden. Du hast auch nicht versucht zu erklären, warum würdest du das Hinzufügen von Trim zu assertEquals Teil helfen? –

0

Ich empfehle Ihnen, die genauen Bytes der tatsächlichen und erwarteten Zeichenfolgen zu betrachten. Es könnte zum Beispiel einen unzerbrechlichen Raum anstelle eines regulären Raums geben und dann werden sie gleich aussehen, aber nicht für Gleichgestellte.

Sie können den Unterschied sehen, indem Sie den folgenden Ausschnitt ausgeführt wird:

String a = new String("a\u00A0b"); 
String b = new String ("a b"); 
System.out.println(a + "|" + Arrays.toString(a.getBytes())); 
System.out.println(b + "|" + Arrays.toString(b.getBytes())); 

die Ausgabe:

a b|[97, -62, -96, 98] 
a b|[97, 32, 98] 
+0

hey, ich habe versucht, wenn ((actualResult.getBytes()). Equals (expectedResult.getBytes())) { \t \t \t \t System.out.println ("String Equal"); \t \t \t \t \t \t \t} aber die gleiche issue.Any andere Lösung bekommen ?? – DoubtClear

+0

Ich wollte Bytes nicht vergleichen. Sie sollten sich die genauen Bytes in der tatsächlichen Ansicht ansehen und erwarten, dass sie sich unterscheiden. Wie in dem Beispiel, das ich in meiner Antwort gegeben habe. Dort werden beide Strings als 'a b' ausgedruckt, enthalten aber zuerst '-62, -96' als Leerzeichen, da es sich um ein nicht brechbares Leerzeichen handelt, das zweite enthält ein übliches Leerzeichen - '32'. Dann würden Sie den Unterschied sehen und darauf reagieren können. Prüfen Sie zum Beispiel, woher der nicht brechbare Bereich stammt, oder erstellen Sie das erwartete Ergebnis, so dass es an der richtigen Stelle nicht brechbaren Platz enthält, und vergleichen Sie dann einfach mit equals. –

+0

@DoubtClear Haben Sie eine Lösung für Ihr Problem gefunden? –

Verwandte Themen