找到一个特定的单词,并在“字母”之前而不是之后替换它

时间:2013-07-30 13:27:32

标签: java eclipse replace word

我有一个字母表,我想在任何字母之前替换,而不是之后。例如,如果我有一个单词“instant”,我想确保't'之后的char'a'应该在't'之前。它应该是无助的。无论哪个单词都有'a',它应该在之前而不是之后被替换。有什么办法吗?

3 个答案:

答案 0 :(得分:1)

你只给出了一个例子,所以我不能发表一般答案。也许你可以概括一下:

String input = "instant";
String replaced = input.replaceAll("(\\w)a", "a$1");

答案 1 :(得分: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

答案 2 :(得分:0)

老派的方式如下:

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);

我希望我理解你的问题。

一切顺利!