3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
簡(jiǎn)單的答案是:逐個(gè)字符比較兩個(gè)字符串。
換句話說:很可能,內(nèi)置的 Java 字符串比較方法是正確的,導(dǎo)致:您的輸入字符串不相等。相等的字符串極不可能導(dǎo)致equals()
給出錯(cuò)誤。
因此,合理的第一個(gè)選擇是:更改您的比較代碼,使其:
逐個(gè)字符地迭代第一個(gè)字符串
從第二個(gè)字符串中獲取對(duì)應(yīng)的字符
比較那些(“完整”等于或忽略大小寫)
關(guān)于不匹配:打印出索引和兩個(gè)不同的字符(您確保打印一些東西,例如
"<" + thatChar + ">"
只是為了確保不可打印的字符,或者可能使用 Character.getNumericValue())
所以,這里的答案基本上是讓自己能夠進(jìn)行適當(dāng)?shù)恼{(diào)試。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
順便說一句,這些字符串是實(shí)際數(shù)據(jù)(json),它們真的很大,我想測(cè)試它的相等性(內(nèi)容)。
如果這些是 JSON 數(shù)據(jù),請(qǐng)不要將它們與 String 進(jìn)行比較。
使用 JSON 庫(kù)(Jackson、GSON 或任何東西)來表示這些數(shù)據(jù)并比較它們(equals()通常被覆蓋)。它會(huì)通過考慮或忽略空格、節(jié)點(diǎn)順序等內(nèi)容來更清晰、更具體地比較它們。 . 你可以在這里找到一些例子。
您可以更特別地考慮 SkyScreamer 庫(kù),它提供多種風(fēng)格來比較 JSON。例如這個(gè)JSONAssert.assertEquals()重載:
public static void assertEquals(org.json.JSONArray expected,
org.json.JSONArray actual,
JSONCompareMode compareMode)
throws org.json.JSONException
您可以在其中指定一個(gè)JSONCompareMode對(duì)象,例如 JSONCompareMode.LENIENT.

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
170k 對(duì)于字符串來說并不算大,盡管對(duì)于源代碼中的字符串文字來說它很大。
從包含它們的文件中加載您的兩個(gè)字符串,并使用 equals 以正常方式進(jìn)行比較。
您提到字符串不是文本而是 JSON。在大多數(shù)情況下,您需要規(guī)范化您的 json(使空格、屬性順序和標(biāo)點(diǎn)符號(hào)相同)。
添加回答
舉報(bào)