java - 在 String 中的特定位置查找模式并将其替换为 Java 中的其他内容
问题描述
我正面临一个奇怪的问题,由于某种原因我无法解决。如果我有这个字符串:“aaaa aa” 模式是:“aa” 所以有 3 个地方与该模式匹配:(aa)(aa)(aa) 我想在特定位置更改模式(假设在第二个位置)与其他东西,让我们说这个字符串:“bbb”。
所以最终结果将是:“aabbb aa”。
解决这个问题的最简单方法是什么?没有任何特殊的集合或特殊的类。
解决方案
一种选择是使用正式的正则表达式模式匹配器,然后迭代输入字符串,寻找aa
匹配项。当我们击中第二场比赛时,然后替换aa
for 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
推荐阅读
- r - 当数据帧是子集时 predict.lm 抛出错误
- python - 创建一个带有 GUI 的类....语法问题
- elasticsearch - 如何在 ElasticSearch 或 SOLR 中为共享文件夹建模?
- outlook - 将 Sendgrid 和 Outlook SPF 记录添加到域 dns 设置
- magento - Magento2 在多个网站上仅共享用户登录
- android - Android:无法将文件共享到 Google Drive,但我可以撰写电子邮件
- python - 完整的 n 位因子
- django - Django检查模板中的表单字段属性
- flutter - 将主抽屉添加到颤动的按钮
- javascript - js事件时套接字php到java