Следующий метод немного более надежен (допускает различное количество пробелов или разрывов между источником и целью). Например. цель может иметь дополнительные пробелы между словами, но она все равно будет совпадать.
Сначала определите символы, которые разрешены в качестве разделителей слов в вашей строке. Затем разделите исходную и целевую строки на токены, используя разделители. Затем проверьте, не найдены ли слова в вашем источнике в качестве начальных слов.
например. (Java) Я использовал пробелы и дефисы в качестве разделителей
public boolean isValidMatch(String source, String target){
String[] sourceTokens = source.split("[\\s\\-]+"); // split on sequence of
//whitespaces or dashes. Two dashes between words will still split
//same as one dash.
String[] targetTokens = target.split("[\\s\\-]+"); // split similarly
if(sourceTokens.length>targetTokens.length){
return false;
}
for(int i=0;i<souceTokens.length;i++){
if(!sourceTokens[i].equals(targetTokens[i])){
return false;
}
}
return true;
}
PS: Вы можете добавить точку "." символ в качестве разделителя, если у вас есть источник "Hello World" и цель "Hello World.mp3"; В настоящее время он не будет совпадать, поскольку регулярное выражение не разбивается на точки, но если вы расширите свой разделитель, включив в него точку, то оно будет.