Java 如何突出显示较长字符串中的第一行?
我有数百行的用户可读文件。 每行都很短(~20-30个符号) 有时,我需要使用该字符串对另一个字符串执行equals操作 如果字符串不同,我需要找到不同的第一行。当然我可以手动完成: 在循环中,查找第一个不同的字符,然后查找前面和后面的Java 如何突出显示较长字符串中的第一行?,java,string,guava,apache-commons,Java,String,Guava,Apache Commons,我有数百行的用户可读文件。 每行都很短(~20-30个符号) 有时,我需要使用该字符串对另一个字符串执行equals操作 如果字符串不同,我需要找到不同的第一行。当然我可以手动完成: 在循环中,查找第一个不同的字符,然后查找前面和后面的'/n',但在我看来,这段代码并不完美 有没有其他方法可以使用一些外部库来实现它?没有必要使用任何库,您的要求非常简单。但它的独特性足以让任何图书馆都无法拥有它,所以自己编写吧 import java.nio.file.Files; import java.uti
'/n'
,但在我看来,这段代码并不完美
有没有其他方法可以使用一些外部库来实现它?没有必要使用任何库,您的要求非常简单。但它的独特性足以让任何图书馆都无法拥有它,所以自己编写吧
import java.nio.file.Files;
import java.util.*;
...
Optional<String> findFirstDifferentLine(Path file, Collection<String> rows) throws IOException {
try (var fileStream = Files.lines(file)) { // Need to close
var fileIt = fileStream.iterator();
var rowIt = rows.iterator();
while (fileIt.hasNext() && rowIt.hasNext()) {
var fileItem = fileIt.next();
if (!Objects.equal(fileItem, rowIt.next()) {
return Optional.of(fileItem);
}
}
return Optional.of(fileIt)
.filter(Iterator::hasNext)
.map(Iterator::next);
}
}
导入java.nio.file.Files;
导入java.util.*;
...
可选FindFirstDifferentitline(路径文件、集合行)引发IOException{
尝试(var fileStream=Files.lines(file)){//需要关闭
var fileIt=fileStream.iterator();
var rowIt=rows.iterator();
while(fileIt.hasNext()&&rowIt.hasNext()){
var fileItem=fileIt.next();
如果(!Objects.equal(fileItem,rowIt.next()){
返回可选。of(fileItem);
}
}
返回可选的.of(fileIt)
.filter(迭代器::hasNext)
.map(迭代器::下一步);
}
}