3 回答
TA贡献1860条经验 获得超8个赞
简单的答案是:逐个字符比较两个字符串。
换句话说:很可能,内置的 Java 字符串比较方法是正确的,导致:您的输入字符串不相等。相等的字符串极不可能导致equals()
给出错误。
因此,合理的第一个选择是:更改您的比较代码,使其:
逐个字符地迭代第一个字符串
从第二个字符串中获取对应的字符
比较那些(“完整”等于或忽略大小写)
关于不匹配:打印出索引和两个不同的字符(您确保打印一些东西,例如
"<" + thatChar + ">"
只是为了确保不可打印的字符,或者可能使用 Character.getNumericValue())
所以,这里的答案基本上是让自己能够进行适当的调试。
TA贡献1820条经验 获得超10个赞
顺便说一句,这些字符串是实际数据(json),它们真的很大,我想测试它的相等性(内容)。
如果这些是 JSON 数据,请不要将它们与 String 进行比较。
使用 JSON 库(Jackson、GSON 或任何东西)来表示这些数据并比较它们(equals()通常被覆盖)。它会通过考虑或忽略空格、节点顺序等内容来更清晰、更具体地比较它们。 . 你可以在这里找到一些例子。
您可以更特别地考虑 SkyScreamer 库,它提供多种风格来比较 JSON。例如这个JSONAssert.assertEquals()重载:
public static void assertEquals(org.json.JSONArray expected,
org.json.JSONArray actual,
JSONCompareMode compareMode)
throws org.json.JSONException
您可以在其中指定一个JSONCompareMode对象,例如 JSONCompareMode.LENIENT.
TA贡献1842条经验 获得超12个赞
170k 对于字符串来说并不算大,尽管对于源代码中的字符串文字来说它很大。
从包含它们的文件中加载您的两个字符串,并使用 equals 以正常方式进行比较。
您提到字符串不是文本而是 JSON。在大多数情况下,您需要规范化您的 json(使空格、属性顺序和标点符号相同)。
添加回答
举报