示例
input: abc def abc abc pqr
我想用xyz替换第三个位置的abc。
output: abc gef abc xyz pqr
提前致谢
答案 0 :(得分:1)
这样做的一种方法是使用。
String[] mySplitStrings = null;
String.Split(" ");
mySplitString[3] = "xyz";
然后重新加入字符串,它不是最好的方法,但它可以工作,你可以把整个过程放到像这样的函数中。
string ReplaceStringInstance(Seperator, Replacement)
{
// Do Stuff
}
答案 1 :(得分:1)
将三个片段分组,即被替换字符串之前的部分,被替换的字符串和其余部分,并组装前缀,替换和后缀:
String pattern = String.format("^(.*?%1$s.*?%1$s.*?)(%1$s)(.*)$", "abc");
String result = input.replaceAll(pattern, "$1xyz$3");
此解决方案假设整个输入是一行。如果您有多行输入,则必须替换点,因为它们与行分隔符不匹配。
答案 2 :(得分:1)
有很多方法可以做到这一点,但这里有一个。它假设字母组将用空格分隔,并查找第3个'abc'块。然后用一个替换来替换'xyz'。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class main {
private static String INPUT = "abc def abc abc pqr";
private static String REGEX = "((?:abc\\ ).*?(?:abc\\ ).*?)(abc\\ )";
private static String REPLACE = "$1xyz ";
public static void main(String[] args) {
System.out.println("Input: " + INPUT);
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT); // get a matcher object
INPUT = m.replaceFirst(REPLACE);
System.out.println("Output: " + INPUT);
}
}