【Java】在一个字符串指定位置插入字符串

来源:互联网 发布:淘宝访客只有二三十 编辑:程序博客网 时间:2024/06/10 18:50

四、更新

更新时间:2017年12月8日01:51:24
下面的方法有一个问题,是我刚才没有考虑到的问题,就是下面的方法只适用于一次操作,如果两次操作会有问题,什么问题呢,就是你第一次插入之后,Stringbuilder里面的index就被扰乱了啊,就像一个脑经急转弯:一个人不能空腹吃两个香蕉,因为他吃完第一根香蕉的时候,就不是空腹了;
这里涉及:
①插入后,新旧index冲突问题;
②使用集合,length()或者size()会被index冲破,强行被破坏;

五、策略

所以尝试了下,采取的解决策略是:
①先查出所有的含有目标的小字符串的index,放入List集合中;
②插入的时候,不能从前往后插,选择从后往前插,这样就不会耽误我从前往后数了,就像我想把GODBOK变成GOLDBOSK
这里写图片描述
这样,就要在原下标2前面加一个L,原下标5前面加一个S;
但是,如果我先在下标2前面insert插入了一个L,原来的下标顺序就会被打乱:
这里写图片描述
我本来想在2和4前面分别插入L和S的,如果顺序插,这样就不好弄了;如果从前往后数,数到最后一个标记的地方,先插入S,再往前走,这样,往前走的时候,遇到的还是旧的下标:
这里写图片描述

六、源代码

    //正文    Element textMain = document.getElementById("contentDiv");    String textMainStr = document.getElementById("contentDiv").toString();    //获取图片src所在的位置,然后找到=号后面的index,插入basic Url    StringBuilder  sb = new StringBuilder (textMainStr);//用来字符串操作    List<Integer> indexList = new ArrayList<>();//用来存放下标    //获取需要插入的下标,先记录,暂不处理;    for (int i=0;i<textMainStr.length();i++){        Integer index=textMainStr.indexOf("src",i);        if (-1!=index){            indexList.add(index);            i=index;        }    }    //如果有需要处理的,集中处理插入    if (indexList.size()>0) {        for (int j = indexList.size() - 1; j >= 0; j--) {            sb.insert(indexList.get(j) + 5, OtherSystemBingdingUrl.BASIC_URL);//这里的5是微调数出来的;            System.out.println(sb);        }    }

一、问题

最近一直在出差,所以博客断了这么多,愧疚愧疚;
最近需要解析一个页面,然后在手机端展示;因为手机端ionic有个非常牛逼的方法,叫:

<p [innerHtml]="newsDetail.textMain"></p>

就是,如果你的newsDetail对象中的textMain属性里存的是带格式的(带标签的)文本,ionic会自动帮你整理,装饰成带格式的页面,分段什么的都是小意思,非常省事;但是呢,如果,这里的内容里面有图片,就比较麻烦,一般我们网页端的图片的src写的都是访问地址的后半段,所以直接加载是加载不出来的;

二、方法

所以,我的思路是找到src后面的地址,然后插入前面的basic url;我拿到精确的正文的Element后,确定只有该图片有src这三个字符;
①先用indexOf获取src的下标;
这里写图片描述
②推测(就是数,第三声)出我要插的下标位置;
这里写图片描述
③插入网站的basic url,就是门户网站地址;
这里写图片描述

三、源代码

具体操作可以看我的截图,源代码附在下方,赶时间的朋友可以参考下:

public class TestInsertString {    public static void main(String[] args) {        String s= "<img border=\"0\" src=\"/ewebeditor/uploadfile/20171020084224496.jpg\"></p>";        int index = s.indexOf("src");//获取src下标,从而找到插入位置        System.out.println(index);//寻找插入位置        StringBuilder  sb = new StringBuilder (s);//将String变成StringBuilder,字符串可编辑模式        sb.insert(21,"http://www.XXXXX.com");//插入        System.out.println(sb);//检测是否插入成功    }}

欢迎关注我的博客和微信公众号【幕桥社区】,谢谢~

这里写图片描述

原创粉丝点击