Моя строка, содержащая текстовый файл размером 50 МБ.
Я получил свою строку так:
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);
Я получаю строковое выражение, которое может содержать несколько слов, и мне нужно вернуть ответ, если это выражение есть в моей вики-строке (большая строка) или нет.
Действие работает хорошо для примерно 1% строки (от начала строки), и когда искомая фраза находится в середине или конце строки, ответ, который я получаю для следующего кода, является ложным :
System.out.println(wiki.contains(strToCheck));
System.out.println(wiki.indexOf(strToCheck, 0));
System.out.println(wiki.matches("(?i).*"+strToCheck+".*"));
Кто-нибудь знает, почему это происходит?
Или что я делаю не так?
Спасибо.