在字符串中的特定位置查找模式,然后用Java中的其他模式替换它

时间:2018-11-29 10:04:11

标签: java string

我遇到一个奇怪的问题,由于某种原因我无法解决。 如果我有此字符串:“ aaaa aa” 模式是:“ aa” 因此,有3个与该模式匹配的地方:(aa)(aa)(aa) 我想用其他方式更改特定位置(例如第二个位置)的模式,比如说这个字符串:“ bbb”。

因此,最终结果将是:“ aabbb aa”。

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

2 个答案:

答案 0 :(得分:2)

一种选择是使用正式的正则表达式模式匹配器,然后迭代输入字符串,寻找aa匹配项。当我们达到 second 匹配时,将aa替换为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

答案 1 :(得分:1)

curl -X POST -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" --data-urlencode "a=öäü" http://localhost类具有一个String方法。此方法有两种变体:一种是您仅指定针(要搜索的字符串),然后该方法返回大海捞针中第一个字符(要搜索的字符串)的位置,该位置与您的模式相符。

第二个变量有两个参数:模式和开始位置。

因此,您可以执行以下操作:

indexOf