按byte截取日语字符串
来源:互联网 发布:淘宝双十一晚会2017 编辑:程序博客网 时间:2024/05/29 02:22
按byte截取日语字符串
业务要求是:把一个字符串按9byte分割,9byte后加一个回车换行,因为字符串中包含日文字,就要考虑同一个音标不被分割到两行,困扰了一会,写了如下代码,有类似业务的可以参考。
代码块
import java.util.Arrays;public class StringAddEnterByByte { private static final String[] ARR = { "゙", "゚" }; private static final String[] ARR2 = { "゙", "゚", "ゃ", "ゅ", "ょ", "ャ", "ュ", "ョ", "ャ", "ュ", "ョ" }; public static void main(String[] args) { String str = "12356キがしょ1全ジュ123ぴゃ4567ガ89012ジュ123456"; String result = convert(str, 9, new StringBuffer()); System.out.println(result); } public static String convert(String str, int subLen, StringBuffer sb) { int i = 1; while (i <= str.length()) { if (str.substring(0, i).getBytes().length > subLen) { i = Arrays.asList(ARR2).contains(str.substring(i - 1, i)) ? Arrays.asList(ARR).contains(str.substring(i - 2, i - 1)) ? i - 3 : i - 2 : i - 1; sb.append(str.substring(0, i) + "\n"); return convert(str.substring(i, str.length()), subLen, sb); } else { if (i == str.length()) { sb.append(str.substring(0, i)); break; } i++; } } return sb.toString(); }}
运行结果:
12356キがしょ1全ジュ123ぴゃ4567ガ89012ジュ123456
总结:
主要采用了递归的方式循环截取,这样就可以把日语的音标都分割到一行内,完成按byte分割字符串。
注:有不对的地方,请随时指正。
———————————————————– By cheney ———————————————————–
阅读全文
0 0
- 按byte截取日语字符串
- 字符串截取(按byte截取)
- java按指定的字节Byte的起始位置截取长度截取字符串
- 笔试题,按照byte截取字符串
- 按字节截取字符串
- 按字节截取字符串
- 字符串按|截取
- 按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- C#截取字符串按字节截取SubString
- 正则取得字符串的长度<byte> 并根据字节截取字符串
- java 按需截取字符串
- 按字节长度截取字符串
- java 按需截取字符串
- 按字节截取字符串-Java
- 用css 添加手状样式,鼠标移上去变小手,变小手
- 苹果最后通牒:iOS软件不移除热更新将导致6月12日下架
- 统计一个数据库中每一个表的记录数
- java ssh三大框架搭建整合
- Java-Object类源码解析
- 按byte截取日语字符串
- 括号序列
- 数学的公式 and 知识
- 测试一下功能
- 剑指offer-面试题66-矩阵中的路径
- 如何加强企业研发管理?阿里云效硬盘式管理实践揭秘
- $(window).width()与window.innerWidth的区别
- STL 中的 heap 与 priority_queue
- Oracle写丢失错误恢复后的全局索引和分区索引的处理方式