public static boolean hasMultipleNonPositionalSubstitutions(String str) { Duo<List<Integer>, List<Integer>> tuple = findSubstitutions(str, 4); return ! tuple.m1.isEmpty() && tuple.m1.size() + tuple.m2.size() > 1; }
public static String enumerateNonPositionalSubstitutionsIfRequired(String str) { Duo<List<Integer>, List<Integer>> tuple = findSubstitutions(str, 4); if (tuple.m1.isEmpty() || tuple.m1.size() + tuple.m2.size() < 2) { return str; } List<Integer> subs = tuple.m1; StringBuilder out = new StringBuilder(); int pos = 0; int count = 0; for (Integer sub : subs) { out.append(str.substring(pos, ++sub)).append(++count).append('$'); pos = sub; } out.append(str.substring(pos)); return out.toString(); }