【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);//检测是否插入成功 }}
欢迎关注我的博客和微信公众号【幕桥社区】,谢谢~
- 【Java】在一个字符串指定位置插入字符串
- 在字符串指定位置插入字符串
- Java中在一个字符串的固定位置插入字符串
- 字符串指定位置插入
- 在指定的位置后插入字符串
- 在字符串的任意位置插入另一指定字符串
- 在给定位置插入一个字符串
- 指定位置插入新字符串
- 指定位置插入新字符串
- 在一个字符串中插入指定字符
- asp.net CKEditor 在指定位置插入字符串
- C/C++在文件指定位置插入字符串或者空行
- C实例----在字符串指定位置插入字符
- 在指定位置输出字符串
- 将字符串插入到指定位置
- 第十五周 OJ 将一个字符串插入另一个字符串的指定位置
- 在字符串中的特定位置插入字符串
- activity中edittext如何在光标位置插入一个字符串
- 蒟蒻的网络流24题解题记
- Studio真机测试
- linux 基本分区管理——分区、格式化、挂载
- JDBC为什么使用反射加载驱动
- Map集合中value()方法与keySet()、entrySet()区别
- 【Java】在一个字符串指定位置插入字符串
- 【论文笔记】物体检测系列 Light-Head R-CNN: In Defense of Two-Stage Object Detector
- Qt工程文件知多少
- connect by level 的小应用
- python学习总结---全局变量、局部变量
- AI学习之深度学习系列---提前终止
- Http协议详解和版本介绍
- 学习总结2
- Android——RecyclerView——Adapter全部源码翻译及注释