我的字符串包含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)
有谁知道为什么会这样?或者我做错了什么?
谢谢.
我很遗憾地说,但不是50M,而是1024*50.它是50K.您似乎正在阅读文件的0.1%然后在其中搜索.
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |