java在原字符中插入新字符或字符串实例

 更新时间:2020年08月25日 08:45:34   作者:以自由之名  
这篇文章主要介绍了java在原字符中插入新字符或字符串实例,具有很好的价值,希望对大家有所帮助。一起跟随小编过来看看吧

插入字符代码:

public class Test {
  
 /**在原字符中插入新字符**/
  public static void main(String[] args){
  
  StringBuffer sb = new StringBuffer("田田是一个女生!");//建立一个字符缓存区,缓存区中的内容为"田田是一个女生!"
  System.out.println("原字符缓存区中的内容为:"+sb);//输出原字符缓存区中的内容
  System.out.println("原字符缓存区中的长度为:"+sb.length() );//长度
  System.out.println("原字符缓存区中的容量为:"+sb.capacity() );//容量
  
  sb.insert(5, '小');//给指定下标位置前的值赋新值
  
  System.out.println("新字符缓存区中的内容为:"+sb);//输出新字符缓存区中的内容
  System.out.println("新字符缓存区中的长度为:"+sb.length() );//长度
  System.out.println("新字符缓存区中的容量为:"+sb.capacity() );//容量  
  }  
}

解释:sb.insert(5, ‘小');//给指定下标位置前的值赋新值,意思为在sb的第6个字符前插入‘小'字,5为字符缓存区下标的位置,和数组相同都是从0开始。

运行结果:

原字符缓存区中的内容为:田田是一个女生!

原字符缓存区中的长度为:8

原字符缓存区中的容量为:24

新字符缓存区中的内容为:田田是一个小女生!

新字符缓存区中的长度为:9

新字符缓存区中的容量为:24

/**********************************/ /**********************************/

插入字符串代码:

public class Test {
  
 /**在原字符中插入新字符**/
  public static void main(String[] args){
  
  StringBuffer sb = new StringBuffer("田田是一个女生!");//建立一个字符缓存区,缓存区中的内容为"田田是一个女生!"
  System.out.println("原字符缓存区中的内容为:"+sb);//输出原字符缓存区中的内容
  System.out.println("原字符缓存区中的长度为:"+sb.length() );//长度
  System.out.println("原字符缓存区中的容量为:"+sb.capacity() );//容量
  
  sb.insert(5, "刚满18岁的");//给指定下标位置前的值赋一个字符串
  
  System.out.println("新字符缓存区中的内容为:"+sb);//输出新字符缓存区中的内容
  System.out.println("新字符缓存区中的长度为:"+sb.length() );//长度
  System.out.println("新字符缓存区中的容量为:"+sb.capacity() );//容量  
 
  }  
}

运行结果:

原字符缓存区中的内容为:田田是一个女生!

原字符缓存区中的长度为:8

原字符缓存区中的容量为:24

新字符缓存区中的内容为:田田是一个刚满18岁的女生!

新字符缓存区中的长度为:14

新字符缓存区中的容量为:24

总结:

sb.insert(5, '小')是给在字符串sb的第6个字符前插入‘小'字;

sb.insert(5, "刚满18岁的");是给在字符串sb的第6个字符前插入字符串"刚满18岁的";

注意:字符用‘',字符串用""

补充知识:java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:换行,用于解决生成pdf换行问题等问题

原因: 由于html转pdf时,不能自动换行,因此才有下面的代码.

注释:完全模拟html页面的自动换行!

最后的页面展示效果:每一行的长度都一样,看上去像<td></td>的自动换行一样

package test;

import java.io.UnsupportedEncodingException;

/**
 * 解决pdf换行问题,在指定位置插入指定字符串,兼容中英文以及特殊字符
 * 
 * @author xg君
 * 
 */
public class app {

 public static void main(String[] args) throws UnsupportedEncodingException {
  System.out.println(addStr(10, "<br/>", "as阿萨德dsa阿斯蒂芬fladadasdsjf阿斯蒂芬ljdsljkjlfdsklfd啥地方都是skljdsasfasdfads"));
 }

 /**
  * 插入方法
  * 
  * @param num
  *   每隔几个字符插入一个字符串(中文字符)
  * @param splitStr
  *   待指定字符串
  * @param str
  *   原字符串
  * @return 插入指定字符串之后的字符串
  * @throws UnsupportedEncodingException
  */
 public static String addStr(int num, String splitStr, String str) throws UnsupportedEncodingException {
  StringBuffer sb = new StringBuffer();
  String temp = str;

  int len = str.length();
  while (len > 0) {
   int idx = getEndIndex(temp, num);
   sb.append(temp.substring(0, idx + 1)).append(splitStr);
   temp = temp.substring(idx + 1);
   len = temp.length();
  }

  return sb.toString();
 }

 /**
  * 两个数字/英文
  * 
  * @param str
  *   字符串
  * @param num
  *   每隔几个字符插入一个字符串
  * @return int 最终索引
  * @throws UnsupportedEncodingException
  */
 public static int getEndIndex(String str, double num) throws UnsupportedEncodingException {
  int idx = 0;
  double val = 0.00;
  // 判断是否是英文/中文
  for (int i = 0; i < str.length(); i++) {
   if (String.valueOf(str.charAt(i)).getBytes("UTF-8").length >= 3) {
    // 中文字符或符号
    val += 1.00;
   } else {
    // 英文字符或符号
    val += 0.50;
   }
   if (val >= num) {
    idx = i;
    if (val - num == 0.5) {
     idx = i - 1;
    }
    break;
   }
  }
  if (idx == 0) {
   idx = str.length() - 1;
  }
  return idx;
 }
}

效果:

以上这篇java在原字符中插入新字符或字符串实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java集合ArrayList与LinkedList详解

    Java集合ArrayList与LinkedList详解

    这篇文章主要介绍了Java集合ArrayList与LinkedList详解,对于ArrayList和LinkedList,他们都是List接口的一个实现类,并且我们知道他们的实现方式各不相同,例如ArrayList底层实现是一个数组
    2022-08-08
  • Elasticsearch中store field与non-store field的区别说明

    Elasticsearch中store field与non-store field的区别说明

    这篇文章主要介绍了Elasticsearch中store field与non-store field的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java数据库存储数组的方法小结

    Java数据库存储数组的方法小结

    在现代软件开发中,数组是常用的数据结构之一,然而,在关系数据库中直接存储数组并不是一个简单的任务,本文将详细介绍几种在Java中将数组存储到数据库的方法,包括使用JPA、JSON、XML、以及关系型数据库的数组类型等,需要的朋友可以参考下
    2024-09-09
  • 关于Java中static关键字的用法

    关于Java中static关键字的用法

    这篇文章主要介绍了关于Java中static关键字的用法,static:意为静态的,在 Java 里面作为静态修饰符,可以理解为全局的意思,static 不仅可以修饰成员变量,成员方法,还可以修饰代码块,需要的朋友可以参考下
    2023-08-08
  • MybatisPlus关联查询的完美实现方案

    MybatisPlus关联查询的完美实现方案

    我们在项目开发的时候,难免会遇到连表查询的操作,所以下面这篇文章主要给大家介绍了关于MybatisPlus关联查询的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • Java反射机制详解

    Java反射机制详解

    这篇文章主要介绍了Java反射机制,首先简单介绍了反射机制的预备知识,进一步分析了Java反射机制的原理、实现技巧与应用方法,需要的朋友可以参考下
    2015-12-12
  • Java如何处理数据成为树状结构

    Java如何处理数据成为树状结构

    这篇文章主要介绍了Java如何处理数据成为树状结构问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 总结Java对象被序列化的两种方法

    总结Java对象被序列化的两种方法

    今天给大家带来的是关于Java的相关知识,文章围绕着Java对象被序列化的两种方法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • springboot读取application.yml报错问题及解决

    springboot读取application.yml报错问题及解决

    这篇文章主要介绍了springboot读取application.yml报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • java 动态生成bean的案例

    java 动态生成bean的案例

    这篇文章主要介绍了java 动态生成bean的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论