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

四、更新

更新时间: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);//检测是否插入成功
    }
}

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

这里写图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
要在文本文件中指定位置插入一个字符串,可以使用Java的FileWriter和BufferedWriter类。以下是实现的步骤: 1. 创建FileWriter对象并打开要编辑的文件。 2. 创建BufferedWriter对象,将FileWriter对象传递给它,以提高性能。 3. 将文件内容读入StringBuffer或StringBuilder中。 4. 将要插入字符串插入到StringBuffer或StringBuilder中的指定位置。 5. 将StringBuffer或StringBuilder中的内容写回文件中。 6. 关闭BufferedWriter和FileWriter对象。 以下是一个示例代码: ```java import java.io.*; public class InsertStringToFile { public static void main(String[] args) { try { // 打开要编辑的文件 FileWriter fw = new FileWriter("example.txt"); BufferedWriter bw = new BufferedWriter(fw); // 将文件内容读入StringBuilder中 StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(new FileReader("example.txt")); String line; while ((line = br.readLine()) != null) { sb.append(line); sb.append(System.lineSeparator()); } String fileContent = sb.toString(); // 在指定位置插入字符串 int insertPosition = 10; String insertString = "插入字符串"; StringBuilder result = new StringBuilder(); result.append(fileContent.substring(0, insertPosition)); result.append(insertString); result.append(fileContent.substring(insertPosition)); // 将修改后的内容写回文件 bw.write(result.toString()); // 关闭文件流 bw.close(); fw.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先打开文件并将其内容读入StringBuilder中。然后,我们在指定位置插入字符串并将修改后的内容写回文件中。请注意,我们使用了try-catch语句来处理可能的IOException异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值