ユーザー入力の各部分文字列をテストして不正な文字をテストするループを作成しています。ただし、不正な文字が入力の最後の位置にある場合にのみ検出されます。解決策は単純かもしれませんが、それを理解できないように感じます。文字列の任意の位置で検出されるように、どうすればこれを修正できますか?
public class IllegalFileName {
public static final Set<String> illegalCharsSet = new HashSet<String>(
Arrays.asList("/", "\n", "\r", "\t", "\0", "\f", "`", "?", "*",
"\\", "<", ">", "|", "\"", ":", ".", "£", "$", "%", "^",
"&", ")", "("));
public static void main(String[] args) {
String illegalNameText = "££!233";
String illegalNameText2 = "££!233$";
boolean illegalName = false;
for (int i = 0; i <= illegalNameText.length() - 1; i++) {
System.out.println(i);
if (illegalCharsSet.contains(illegalNameText.substring(i))) {
System.out.println(illegalNameText + " is illegal");
illegalName = true;
System.out.println(illegalNameText.substring(i));
}
}
for (int i = 0; i <= illegalNameText2.length() - 1; i++) {
System.out.println(i);
if (illegalCharsSet.contains(illegalNameText2.substring(i))) {
System.out.println(illegalNameText2 + " is illegal");
illegalName = true;
System.out.println(illegalNameText2.substring(i));
}
}
}
}