Написание одного и того же кода более одного раза должно немедленно вызвать тревогу в вашей голове, чтобы переместить этот код в функцию, чтобы его можно было повторно использовать.
Что касается упрощения выражения, лучший подход, вероятно, - сохранить шаблоны, которые вы ищете в виде массива, и повторение массива с вашим условием.
private static final String[] patterns = new String[] {"!\"#", "$%&", "\'()", "!$\'", "\"%(", ...};
private static void findPatterns(String input) {
for (String pattern : patterns) {
if (input.contains(pattern) {
System.out.println("Found pattern: " + pattern);
}
}
}
// Elsewhere...
findPatterns(stringX);
findPatterns(stringY);
Этот шаблон особенно распространен в функциональных языках и языках функционального стиля. Java 8 потоков являются хорошим примером, так что вы могли бы эквивалентно
List<String> patterns = Arrays.asList("!\"#", "$%&", "\'()", "!$\'", "\"%(", ...);
patterns.stream()
.filter(pattern -> stringX.contains(pattern))
.forEach(pattern -> System.out.println("Found pattern: " + pattern));