Вы можете использовать String.replaceFirst(String, String)
:
String a = "a creature is a small part of a big world";
String b = "a";
String c = "the";
String d = a.replaceFirst(" " + b + " ", " " + c + " ");
System.out.println(d);
... распечатывает:
a creature is the small part of a big world
Прочитайте документацию для получения дополнительной информации: Строковая документация
Редактировать:
Извините, я неправильно понял вашу проблему. Вот пример замены всех вхождений, кроме первого и последнего:
String a = "a creature is a small part of a big world";
String b = "a";
String c = "the";
String[] array = a.split(" ");
ArrayList<Integer> occurrences = new ArrayList<>();
for (int i = 0; i < array.length; i++) {
if (array[i].equals(b)) {
occurrences.add(i);
}
}
if (occurrences.size() > 0) {
occurrences.remove(0);
}
if (occurrences.size() > 0) {
occurrences.remove(occurrences.size() - 1);
}
for (int occurrence : occurrences) {
array[occurrence] = c;
}
a = String.join(" ", array);
System.out.println(a);
Редактировать:
Альтернативным типом для коллекции вхождений:
String a = "a creature is a small part of a big world";
String b = "a";
String c = "the";
String[] array = a.split(" ");
Deque<Integer> occurrences = new ArrayDeque<>();
for (int i = 0; i < array.length; i++) {
if (array[i].equals(b)) {
occurrences.add(i);
}
}
occurrences.pollFirst();
occurrences.pollLast();
for (int occurrence : occurrences) {
array[occurrence] = c;
}
String d = String.join(" ", array);
System.out.println(d);