Найдите конкретное слово и замените его перед "буквой", а не после
У меня есть алфавит, который я хочу заменить до любого алфавита, а не после. Например, если у меня есть слово "Instant", я хочу убедиться, что символ "a" после "t" должен быть перед "t". Это должно быть безразличным. Везде, где у любого слова есть "а", его следует заменить до, но не после. Есть ли выход из этого?
3 ответа
Вы привели только один пример, поэтому я не могу опубликовать общий ответ. Может быть, вы можете обобщить это:
String input = "instant";
String replaced = input.replaceAll("(\\w)a", "a$1");
Вы можете использовать регулярные выражения, чтобы делать то, что вы хотите.
В общем случае вы хотите заменить <something>a
от a<something>
где <something>
это один символ, любой символ.
В регулярных выражениях это заменяет (\\w)a
от a$1
найти случаи, когда a
предшествует что-то и захватывает это что-то. Затем замените его на a
с последующим захватом чего-то:
public static void main(String[] args) throws Exception {
final String s = "instant";
System.out.println(s.replaceAll("(\\w)a", "a$1"));
}
Выход:
insatnt
Путь старой школы будет примерно таким:
char reference_char = 'a';
String old_string = "instant";
char[] test_array = old_string.toCharArray();
int i = 0;
for (char c : test_array) {
if (i > 0) {
if (c == reference_char) {
test_array[i] = test_array[i - 1];
test_array[i - 1] = reference_char;
}
}
++i;
}
String new_string = new String(test_array);
System.out.println(new_string);
Надеюсь, я понял ваш вопрос.
Всего наилучшего!