我有一个字母表,我想在任何字母之前替换,而不是之后。例如,如果我有一个单词“instant”,我想确保't'之后的char'a'应该在't'之前。它应该是无助的。无论哪个单词都有'a',它应该在之前而不是之后被替换。有什么办法吗?
答案 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);
我希望我理解你的问题。
一切顺利!