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在原字符中插入新字符或字符串实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java中拼接字符串的5种方法效率对比

    前言 最近写一个东东,可能会考虑到字符串拼接,想了几种方法,但对性能未知,所以下面就来测试下面,话不多说了,来一起看看详细的介绍吧. 示例代码 public class Test { List<String> list = new ArrayList<>(); @Before public void init(){ IntStream.range(0, 100000).forEach((index) -> { list.add("str" + index)

  • java的io操作(将字符串写入到txt文件中)

    复制代码 代码如下: import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.PrintStream;import java.io.PrintWriter;import java.io.RandomAccessFile; public cla

  • JAVA实现往字符串中某位置加入一个字符串

    我就废话不多说了,大家看代码吧~ String a = "hello"; StringBuffer sb = new StringBuffer(); 1. sb.append(a).insert(2,"aaa"); 结果 sb.toSring()为"heaaallo" 2. sb.append(a).replace(1, 3, "aaa"); //下标从第一开始,到第三个结束 结果 sb.toSring()为"haa

  • java转换字符串编码格式的方法

    java转换字符串编码格式 (解码错误,重新解码) 字符集概念:规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系. 我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流. 乱码场景(纯属瞎掰): 1) 前台输入utf-8编码的一串汉字(string1). (页面编码为utf-8, 在内存中会将这串汉字以utf-8编码为对应的二进制流存储) 2) 这串汉字(string1)的二进制流在经过http协议传输到后台时,这段

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

    插入字符代码: public class Test { /**在原字符中插入新字符**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer("田田是一个女生!");//建立一个字符缓存区,缓存区中的内容为"田田是一个女生!" System.out.println("原字符缓存区中的内容为:"+sb);//输出原字符缓存区中的内容 System.ou

  • 一篇文章告诉你如何在Java数组中插入一个字符

    目录 定义一个数组 定义插入的字符 打印插入之前字符排列顺序 假设插入位置 找到插入位置 数组数据下移 移入数值 输出数组 总结 定义一个数组 public class charInsert { public static void main(String[] args) { // 这是字符数组 char[] ch = new char[9]; ch[0] = 'a'; ch[1] = 'b'; ch[2] = 'c'; ch[3] = 'f'; ch[4] = 'g'; ch[5] = 'i'

  • C语言如何在字符数组中插入一个字符

    目录 在字符数组中插入一个字符 设计思路 问题思索 代码附录 字符串中插入字符问题 在字符数组中插入一个字符 以前都是照猫画虎,一直都没有自己亲自动手尝试过.这次亲自上阵,把自己的思路尽量理清并完成. 设计思路 定义一个字符数组a和标记插入位置的int型变量pos以及插入字符value. 再定义一个数组b,大小应该比a大1(更大当然更好),用于pos位后的元素的赋值. 赋值,将a中所有元素copy到b. 在pos位置前的元素不改动,pos位置的元素改为value.b[pos]=value; 对于

  • php 在字符串指定位置插入新字符的简单实现

    php 在字符串指定位置插入新字符的简单实现 因为项目用到DataTable表格加载后台数据,要连表查询虚拟机选中的策略状态,所以想到先把策略表内容取出来,组成一个'<select><option value="1"></option>[n个option]</select>'字符串,在遍历虚拟机列表时把他的策略值拼成 'value="1"' 这样的字符串,再利用explode()和implode() 函数,组成新的字符

  • java中简单的截取分割字符串实例

    目前整理出来三种形式: 可根据实际需要选择使用 String userNameUrl; int beginIndex = 0; int endIndex = 0; userNameUrl = "454512@hongri@4944115455d9591b274648a06303d910de"; /** * 方法一: */ beginIndex = userNameUrl.indexOf("@")+1; endIndex = userNameUrl.lastIndex

  • 在Pandas DataFrame中插入一列的方法实例

    目录 引言 示例1:插入新列作为第一列 示例2:插入新列作为中间列 示例3:插入新列作为最后一列 补充:按条件选择分组分别赋值 总结 引言 通常,您可能希望在 Pandas DataFrame 中插入一个新列.幸运的是,使用 pandas insert()函数很容易做到这一点,该函数使用以下语法: insert(loc, column, value, allow_duplicates=False) 在哪里: loc: 插入列的索引.第一列是 0. column: 赋予新列的名称. value:

  • 利用Java读取Word表格中文本和图片的方法实例

    目录 1. 程序环境准备 Jar导入步骤及方法: 方法1:手动导入. 方法2:Maven仓库导入. 2. Java代码 3. 文本.图片读取效果 总结 本文通过Java程序来展示如何读取Word表格,包括读取表格中的文本和图片.下面是具体实现的步骤和方法. 1. 程序环境准备 代码编译工具:IntelliJ IDEA Jdk版本:1.8.0 测试文档:Word .docx 2013 Jar包:free spire.doc.jar 3.9.0 用于测试的Word文档如下: Jar导入步骤及方法:

  • PowerShell中使用replace操作符替换字符串实例

    本文介绍PowerShell中的字符串替换操作符:replace.在replace中,可以使用正则表达式,这样就极大的提高了replace的功能. 复制代码 代码如下: PS> 'Unit1,Unit2,Unit3' -replace '[,\t]',';' Unit1;Unit2;Unit3 上面的这个示例,用途是从给定的字符串中,匹配逗号(,)或tab键(\t),将它们都替换成分号(;).这是一个非常常见的应用的,用于构造CSV文件时经常需要用到.CSV文件是以分号分隔每个单元的数据的. r

  • Java实现读取文章中重复出现的中文字符串

    在上个星期阿里巴巴一面的时候,最后面试官问我如何把一篇文章中重复出现的词或者句子找出来,当时太紧张,答的不是很好.今天有时间再来亲手实现一遍.其实说白了也就是字符串的处理,所以难度并不是很大. 以下是代码和运行效果: 实现方法: import java.io.*; import java.util.*; /** * Created by chunmiao on 17-3-20. */ public class ReadArticle { //读取文件名称 private String filen

  • C#中使用Split方法拆分字符串实例

    C#中有一个字符串拆分函数String.Split(),可以用于将一个字符串,拆分为一个字符串数组.在拆分的时候,需要一个拆分的"分隔符".这个"分隔符"可以是一个字符,也可以是多个字符组成一个字符串. 先举一个简的例子: 复制代码 代码如下: string str="aaa-bbb-ccc-ddd-eee"; string[] sArray=str.Split(new char[] {'-'}); foreach(string i in sAr

随机推荐