also, is there a chance that it's looking for a string that is JUST william but it's not finding it because my string has a william and a last name associated to it?
Yes, it is looking for exactly "william" in a case sensitive way.
Read the javadoc i sent. There is a indexOf method there if you want to find all lines containing "william".