首页 > 解决方案 > 在 String 中的特定位置查找模式并将其替换为 Java 中的其他内容

问题描述

我正面临一个奇怪的问题,由于某种原因我无法解决。如果我有这个字符串:“aaaa aa” 模式是:“aa” 所以有 3 个地方与该模式匹配:(aa)(aa)(aa) 我想在特定位置更改模式(假设在第二个位置)与其他东西,让我们说这个字符串:“bbb”。

所以最终结果将是:“aabbb aa”。

解决这个问题的最简单方法是什么?没有任何特殊的集合或特殊的类。

标签: javastring

解决方案


一种选择是使用正式的正则表达式模式匹配器,然后迭代输入字符串,寻找aa匹配项。当我们击中第二场比赛时,然后替换aafor bb,否则只需替换aa原始值。

String input = "aaaa aa";
Pattern pattern = Pattern.compile("aa");
Matcher matcher = pattern.matcher(input);
StringBuffer buffer = new StringBuffer();

int num = 0;
while(matcher.find()) {
    String replace = num == 1 ? "bbb" : "aa";
    matcher.appendReplacement(buffer, replace);
    ++num;
}

matcher.appendTail(buffer);
System.out.println(buffer.toString());

aabbb aa

推荐阅读