我遇到一个奇怪的问题,由于某种原因我无法解决。 如果我有此字符串:“ aaaa aa” 模式是:“ aa” 因此,有3个与该模式匹配的地方:(aa)(aa)(aa) 我想用其他方式更改特定位置(例如第二个位置)的模式,比如说这个字符串:“ bbb”。
因此,最终结果将是:“ aabbb aa”。
解决此问题的最简单方法是什么?没有任何特殊的集合或特殊的类。
答案 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