当前位置: 首页 > 知识库问答 >
问题:

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

皮安顺
2023-03-14

我正试图找到一个很好的方法,在并行地逐行读取时比较两个字符串。我之所以不使用equals方法,是因为字符串不完全相同,为了更准确,我举一个例子。

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

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

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

有什么想法吗:)?

共有1个答案

赫连智
2023-03-14

既然你说字符串可以很大,我猜你是在从一个文件中读取。当您使用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))
     {

     }
}
 类似资料:
  • 问题内容: 给定一个不太长的字符串,逐行读取字符串的最佳方法是什么? 我知道你可以做: 另一种方法是在eol上获取子字符串: 还有其他更简单的方法吗?我对上述方法没有任何问题,只是想知道你们中是否有人知道一些看起来更简单,更有效的方法? 问题答案: 您也可以使用String方法: 这使您可以方便地将所有行排列在一起。 我不知道拆分的性能。它使用正则表达式。

  • 我正在努力阅读附加的TXT文件,以csv形式显示从文件中读取的每个字段,我做了一个接近我想要的代码,但我没有前进。 TXT文件格式: 我的代码在我想要的位置读取第一行,但下面的行我不能,更不用说重复文件中包含的下一个工资单的读数了。 目前的输出是这样的: 出口应该是怎样的 逐行读取和捕获数据,我必须完成一个工资单,它将在输出中形成一行,第二个工资单将在输出中形成第二行,因此,直到txt文件结束,此

  • 问题内容: 什么是我可以逐行读取每行包含两个String的最快方法?输入文件示例为: 即使在字符串之间有空格,例如,“按行”,每行上总是有两组字符串 目前我正在使用 使用标准的JAVA API是否足够有效或有更有效的方法(请没有外部库)感谢您的帮助! 问题答案: 这取决于您说“有效”时的意思。从性能的角度来看,这是可以的。如果您询问代码的样式和大小,我几乎会做一个小小的修正: 为了从STDIN中读

  • 问题内容: 我有一个简单的疑问。如果有人帮助我,那就太好了。 我有两个字符串: 这两个值相等,但是如何在Java中比较它们呢?我们拥有并用于比较字符串alpha值,类似地,如何比较数字值。 问题答案: 这就对了。您可以使用方法将数字字符串转换为整数,该方法将返回类型。然后比较与相同。

  • 问题内容: 我有一个.gz格式的文件。读取此文件的Java类是GZIPInputStream。但是,此类不会扩展Java的BufferedReader类。结果,我无法逐行读取文件。我需要这样的东西 尽管我创建了扩展java的Reader或BufferedReader类并使用GZIPInputStream作为其变量之一的类。 但是,这在我使用时不起作用 有人可以建议如何进行.. 问题答案: 装饰器的

  • 稳定性: 2 - 稳定的 require('readline') 模块提供了一个接口,用于从可读流(如 process.stdin)读取数据,每次读取一行。 它可以通过以下方式使用: const readline = require('readline'); 例子,readline 模块的基本用法: const readline = require('readline'); const rl