You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java代码替换字符串中src属性的未知值为指定内容?

解决Java中替换src属性值的问题

嘿,我来帮你搞定这个替换需求!你之前用substring()的思路确实会漏掉原字符串后半部分的内容,因为只拼接了src之前的内容和替换后的属性,没把结尾的文本加回去。其实用正则表达式来做模式匹配替换,是最省心高效的方案,正好适配你这种固定格式的字符串替换场景。

推荐方案:正则表达式替换

我们可以用正则精准匹配src="任意字符串"这个模式,然后把中间的任意内容替换成你指定的字符串(比如stackoverflow)。

正则表达式说明

我们用的正则是:src="[^"]+"

  • src=":匹配属性的开头部分
  • [^"]+:匹配任意非双引号的字符,确保我们只捕获src属性内部的内容,不会误匹配到后面的其他双引号
  • ":匹配属性结尾的双引号

Java代码示例

public class SrcReplacer {
    public static void main(String[] args) {
        // 原始字符串
        String string1 = "text1 src=\"arbitrary_string_1\" text2";
        String string2 = "text3 src=\"arbitrary_string_2\" text4";
        
        // 指定要替换成的目标字符串
        String targetValue = "stackoverflow";
        
        // 执行替换
        String updatedString1 = string1.replaceAll("src=\"[^\"]+\"", "src=\"" + targetValue + "\"");
        String updatedString2 = string2.replaceAll("src=\"[^\"]+\"", "src=\"" + targetValue + "\"");
        
        // 输出结果
        System.out.println(updatedString1); // text1 src="stackoverflow" text2
        System.out.println(updatedString2); // text3 src="stackoverflow" text4
    }
}

这个方法的好处是:不管原始字符串里有多少个src="..."模式,都会一次性全部替换,而且完全保留原字符串的其他内容,不会出现截断问题。

可选方案:修正substring写法(仅适用于单个src属性)

如果你还是想用substring()来实现,可以通过找到两个关键索引来完成:

  1. 找到src=\"的起始位置
  2. 找到该位置之后第一个双引号的位置
    然后把中间的内容替换掉,代码如下:
String original = "text1 src=\"arbitrary string\" text2";
String targetValue = "stackoverflow";

// 找到src属性的起始索引
int srcStartIndex = original.indexOf("src=\"");
// 找到src属性值结尾的双引号索引
int endQuoteIndex = original.indexOf("\"", srcStartIndex + 5); // 5是"src=\""的长度

// 拼接新字符串
String updatedString = original.substring(0, srcStartIndex + 5) 
                        + targetValue 
                        + original.substring(endQuoteIndex);

System.out.println(updatedString); // text1 src="stackoverflow" text2

不过这种写法只能处理单个src属性的情况,如果字符串里有多个,就需要循环处理,不如正则方案灵活。

内容的提问来源于stack exchange,提问作者טל חדד

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:47:40