The best way to do it is to use a regexp :
page.matches(".*\\b[Oo][Ff]\\b.*")
.* means "any char zero or more times".
\\b is a word boundary.
[Oo] means the character 'O', upper case or lower case.
Here are some test cases:
String page = "Paint, Body & Trim : Body : Moldings : Sunroof";
System.out.println(page.matches(".*\\b[Oo][Ff]\\b.*")); // false
page = "A piece of cake";
System.out.println(page.matches(".*\\b[Oo][Ff]\\b.*")); // true
page = "What I'm made of";
System.out.println(page.matches(".*\\b[Oo][Ff]\\b.*")); // true
page = "What I'm made of.";
System.out.println(page.matches(".*\\b[Oo][Ff]\\b.*")); // true
page = "What I'm made of, flesh";
System.out.println(page.matches(".*\\b[Oo][Ff]\\b.*")); // true
page = "Of the Night";
System.out.println(page.matches(".*\\b[Oo][Ff]\\b.*")); // true
Matching " of " (with spaces before and after) will not work in the cases where "of" is at the beginning, at the end, before a punctuation,...