java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:换行,用于解决生成pdf换行问题等问题
2017-02-07 09:13
1056 查看
原因: 由于html转pdf时,不能自动换行,因此才有下面的代码.
注释:完全模拟html页面的自动换行!
效果:
![](http://images2015.cnblogs.com/blog/1096947/201702/1096947-20170206162512541-104210292.png)
我的另一篇文章的地址:http://www.cnblogs.com/king-xg/p/6370890.html
签名:雪糕君
注释:完全模拟html页面的自动换行!
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; } }
效果:
![](http://images2015.cnblogs.com/blog/1096947/201702/1096947-20170206162512541-104210292.png)
我的另一篇文章的地址:http://www.cnblogs.com/king-xg/p/6370890.html
签名:雪糕君
相关文章推荐
- java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:换行,用于解决生成pdf换行问题等问题
- Java随机密码生成器,Java随机生成长度不少于6的指定长度的密码,且这个字符串必须包含大小写字母、数字和特殊字符,四种的任意三种
- Java随机生成长度不少于6的指定长度的密码,且这个字符串必须包含大小写字母、数字和特殊字符,四种的任意三种
- 如何解决java.sql.Statement无法处理特殊字符以及容易被黑问题
- iText7 生成 PDF 文件,解决各种操作系统中文问题,控制指定位置显示图片、文字、图文混排
- PHP处理中文字符串中的特殊字符解决Oracle插入报错的问题
- Java反转字符串和相关字符编码的问题解决
- 对字符串中是否包含特殊字符,是否是空格或换行, 以及字数的限制(汉字和字母)
- 使用itext将html生成pdf中文换行问题解决方案2
- Java字符串split分割星号*等特殊字符问题(转)
- Java字符串split分割星号*等特殊字符问题
- JAVA中无法处理带有特殊字符文件名的zip包的问题解决
- java 服务器 输出字符前段js接受问题例如00000051 这种字符串
- Java的中英文混合截取字符串的问题解决方法
- 使用itext将html生成pdf中文换行问题解决方案
- 解决数据库插入特殊中文字符变成?的问题
- Java中中英文对齐输出问题,以及Java中的格式化输出
- Java MessageFormat.format格式化字符串大括号以及单引号问题
- java中JTextPane使输出字符到指定的宽度换行,并将垂直滚动条的位置移动到输出的最后位置
- 问题解决——VS2010 将生成的文件复制到指定位置