1

我试图找到一种在并行读取时比较两个字符串的好方法。我想在不使用 equals 方法或类似方法的情况下这样做的原因是因为字符串不完全相同,为了更准确,我将举一个例子。

String s1 = "aaa\nbbb\nccc\ddd"
String s2 = "aaa\n\rbbb\n\rccc\n\rddd"

当我们逐行查看时,您可以看到两个字符串具有相同的值(尽管不完全相等,因为 s2 也包含 \r )。现在,我知道我可以使用一些删除方法来清理“\r”,但由于字符串可能非常大,我更喜欢逐行循环,一旦字符串不等于打破我的逻辑。换句话说,我更喜欢只迭代所需的行,而不是从 \r 中清除条目字符串。

编辑:我没有从文件中读取。这些是纯字符串。

有任何想法吗 :) ?

4

2 回答 2

5

既然您说字符串可能非常大,我猜您正在从文件中读取。当您使用 BufferedReader 并使用该readLine();方法时,您将逐行获取,没有行分隔符。现在,您可以使用equals().

BufferedReader reader1 = ...; // depends on your source
BufferedReader reader2 = ...; // depends on your source

String line1 = null;
String line2 = null;

while ((line1 = reader1.readLine()) != null && (line2 = reader2.readLine()) != null)
{
     if (line1.equals(line2))
     {

     }
}
于 2012-04-12T09:03:20.597 回答
2

您可以创建两个 BufferedReader 对象,每个字符串一个,逐行读取并比较代表一行的字符串。BufferedReader.readLine() 方法会自动去除行尾字符(它们不会添加到返回的字符串中)。

BufferedReader br1 = new BufferedReader(new StringReader(s1)); 是如何创建缓冲阅读器的。

于 2012-04-12T09:07:51.840 回答