如何在Java中替换文本中特定单词后的字符串?
优雅实现Java中特定单词后字符串的替换
方案一:使用极简正则表达式(推荐)
不需要复杂的正则语法,用String.replaceFirst就能快速实现需求,核心是精准匹配目标单词后的第一个非空白字符串并替换:
String originalText = "Today we have an IKAR ME123 from Greece."; String modifiedText = originalText.replaceFirst("(\\bIKAR\\s+)\\S+", "$1XXXX"); System.out.println(modifiedText); // 输出:Today we have an IKAR XXXX from Greece.
正则说明:
\bIKAR\b:确保匹配完整的IKAR单词(避免误匹配包含IKAR的其他单词,比如IKAR123)\s+:匹配IKAR后面的一个或多个空格(\bIKAR\s+):将IKAR和后续空格作为分组,替换时用$1保留这部分内容\S+:匹配IKAR后面的目标单词(所有非空白字符)
方案二:纯字符串操作(无需正则)
如果完全不想使用正则,可以通过字符串索引定位实现,逻辑直观:
String originalText = "Today we have an IKAR ME123 from Greece."; String targetWord = "IKAR"; String replacement = "XXXX"; String modifiedText = originalText; int targetPos = modifiedText.indexOf(targetWord); if (targetPos != -1) { // 定位到目标单词后的第一个空格 int afterTargetSpace = modifiedText.indexOf(' ', targetPos + targetWord.length()); if (afterTargetSpace != -1) { // 定位到下一个空格,确定要替换单词的结束位置 int nextSpace = modifiedText.indexOf(' ', afterTargetSpace + 1); if (nextSpace == -1) { // 目标单词是文本最后一个内容 modifiedText = modifiedText.substring(0, afterTargetSpace + 1) + replacement; } else { // 截取拼接保留前后内容,替换中间单词 modifiedText = modifiedText.substring(0, afterTargetSpace + 1) + replacement + modifiedText.substring(nextSpace); } } } System.out.println(modifiedText);
内容的提问来源于stack exchange,提问作者user2557930
相关产品推荐
相关产品推荐

