Java:并行读取时逐行比较两个字符串

时间:2012-04-12 08:59:59

标签: java string

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

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

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

中清除entrie字符串

编辑:我不是从文件中读取的。这些都是简单的字符串。

任何想法:)?

2 个答案:

答案 0 :(得分: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))
     {

     }
}

答案 1 :(得分:2)

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

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