小编Ann*_*ish的帖子

在Java中搜索非常长的String中的表达式

我的字符串包含50 MB的文本文件.我得到了这样的字符串:

RandomAccessFile file = new RandomAccessFile("wiki.txt", "r");
FileChannel channel = file.getChannel();
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, 1024*50);
byte[] b = new byte[1024*50];
buffer.get(b);
String wiki = new String(b);
Run Code Online (Sandbox Code Playgroud)

我得到一个可以包含多个单词的String表达式,如果这个表达式在我的wiki String(大字符串)中,我需要返回一个答案.该动作适用于大约1%的String(从String的开头),当我正在寻找的短语位于String的中间或末尾时,我得到的以下代码的答案是假的:

System.out.println(wiki.contains(strToCheck));
System.out.println(wiki.indexOf(strToCheck, 0));
System.out.println(wiki.matches("(?i).*"+strToCheck+".*"));
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?或者我做错了什么?

谢谢.

java string

0
推荐指数
1
解决办法
228
查看次数

标签 统计

java ×1

string ×1