Вам не нужно регулярное выражение.Простых indexOf
и lastIndexOf
методов должно быть достаточно.
boolean onlyOne = s.indexOf('/') == s.lastIndexOf('/');
EDIT 1
Конечно, если /
не появится в данной строке выше, будет true
.Таким образом, чтобы избежать этой ситуации, вы также можете проверить, что возвращается индекс из одного из этих методов.
РЕДАКТИРОВАТЬ 2
Рабочее решение:
class Strings {
public static boolean availableOnlyOnce(String source, char c) {
if (source == null || source.isEmpty()) {
return false;
}
int indexOf = source.indexOf(c);
return (indexOf == source.lastIndexOf(c)) && indexOf != -1;
}
}
Контрольные примеры:
System.out.println(Strings.availableOnlyOnce("path", '/'));
System.out.println(Strings.availableOnlyOnce("path/path1", '/'));
System.out.println(Strings.availableOnlyOnce("path/path1/path2", '/'));
Отпечатки:
false
true
false