题目:给定三个字符串str、from和to,把str中的所有from子串替换成to字符串,对连续出现的from子串部分要求只替换成一个to字符串,返回最终的结果字符串。
例:
str=”123abc”, from=”abc”, to=”4567”,返回”1234567”
str=”123abcabc”, from=”abc”, to=”X”,返回”123X”
实现:
1.定义整型变量match,表示匹配到from字符串的什么位置,初始化为match=0
2.遍历str字符串。
1)当str[i]==from[match],如果match==chaf.length,表示str中存在from子串,将str中的这段子串清零;如果match!=chaf.length,只是match++。
2)当str[i]!=from[match],匹配失败,match重置为0。回到from开头重新开始匹配。继续遍历str的下一个字符串
1 | import java.util.Arrays; |
1 | /** |
1 | // Test |
if (result) {
matcher.appendReplacement(sb, to); //将from找出用to替换,并加到sb中
//result = matcher.find();
}
matcher.appendTail(sb); //将最后一次配后的剩余加到sb中
输出:
123Xabc12
1 |
|
while (result) {
matcher.appendReplacement(sb, to);
result = matcher.find();
}
matcher.appendTail(sb);
输出:
123XX12
1 |
|
if (result) {
matcher.appendReplacement(sb, to); //将from找出用to替换,并加到sb中
//result = matcher.find();
}
while (matcher.find()) {
matcher.appendReplacement(sb, “”);
}
matcher.appendTail(sb); //将最后一次配后的剩余加到sb中
输出:
123X12