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中大数据推荐算法使用场景分析

    Java中大数据推荐算法使用场景分析

    在Java中实现大数据推荐算法时,通常会使用一些开源的机器学习库,如Apache Mahout、Weka、DL4J(DeepLearning4j,用于深度学习)或者Spark MLlib(用于在Spark集群上运行),这篇文章主要介绍了Java中可以用的大数据推荐算法,需要的朋友可以参考下
    2024-06-06
  • 关于同一个service调用service本身的方法

    关于同一个service调用service本身的方法

    这篇文章主要介绍了关于同一个service调用service本身的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • MyBatis与Hibernate等ORM框架的区别及说明

    MyBatis与Hibernate等ORM框架的区别及说明

    MyBatis和Hibernate是Java中流行的ORM框架,各有特点:MyBatis采用半自动SQL映射,提供细粒度的SQL控制,适合复杂查询和性能优化;Hibernate采用全自动对象关系映射,提供较高的开发效率,适合简单的CRUD操作,选择哪种框架应根据项目需求、团队技术栈和个人偏好来决定
    2025-03-03
  • Spring Cloud Eureka(全面解析) 大白话

    Spring Cloud Eureka(全面解析) 大白话

    这篇文章主要介绍了Spring Cloud Eureka(全面解析) 大白话,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 使用Java实现qq邮箱发送邮件

    使用Java实现qq邮箱发送邮件

    这篇文章主要为大家详细介绍了使用Java实现qq邮箱发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2010-05-05
  • Springboot Thymeleaf数字对象使用方法

    Springboot Thymeleaf数字对象使用方法

    这篇文章主要介绍了Springboot Thymeleaf数字对象使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2007-09-09
  • SpringBoot下使用定时任务的方式全揭秘(6种)

    SpringBoot下使用定时任务的方式全揭秘(6种)

    这篇文章主要介绍了SpringBoot下使用定时任务的方式全揭秘(6种),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • MyBatisPlus中事务处理的实现

    MyBatisPlus中事务处理的实现

    本文主要介绍了MyBatisPlus中事务处理的实现,包括事务的开启、提交、回滚等操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • 深入浅出分析Java 类和对象

    深入浅出分析Java 类和对象

    面向对象乃是Java语言的核心,是程序设计的思想。Java语言的面向对象技术包括了面向对象和面向过程的基本概念,面向对象的特征,Java语言的类,对象,修饰符,抽象类等一系列的知识点
    2022-03-03
  • 详解Springboot如何通过注解实现接口防刷

    详解Springboot如何通过注解实现接口防刷

    本文主要为大家介绍一种极简洁、灵活通用接口防刷实现方式、通过在需要防刷的方法加上@Prevent 注解即可实现短信防刷,感兴趣的可以了解一下
    2022-09-09

最新评论