Обычно регулярное выражение делает отличную работу здесь.Тем не менее, если вы ищете что-то более настраиваемое, рассмотрите следующую реализацию:
private static int positionOf(String source, String target, int match) {
if (match < 1) {
return -1;
}
int result = -1;
do {
result = source.indexOf(target, result + target.length());
} while (--match > 0 && result > 0);
return result;
}
, а затем тест будет выполнен с:
String str1 = "test..1231.asdasd.cccc..2.a.2 ".System.out.println (positionOf (str1, ".", 3));-> // печатает 10System.out.println (positionOf (str1, "c", 4));-> // печатает 21System.out.println (positionOf (str1, "c", 5));-> // печатает -1System.out.println (positionOf (str1, "..", 2));-> // печатает 22 -> просто имейте в виду, что первый символ после совпадения находится в позиции 22 + target.length (), а также может отсутствовать элемент с таким индексом в массиве char.