博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
按字节取字符串
阅读量:3027 次
发布时间:2019-05-15

本文共 1419 字,大约阅读时间需要 4 分钟。

题目如下:给定一个字符串,包含中文字符和英文字符,取给定大小字节的子串。

代码如下:

import java.io.UnsupportedEncodingException; public class CutString { /** * 判断是否是一个中文汉字 * @param c * @return true表示是中文汉字,false表示是英文字符 * @throws UnsupportedEncodingException */ public static boolean isChineseChar(char c) throws UnsupportedEncodingException { return String.valueOf(c).getBytes("GBK").length > 1; } /** * 按照字节位数截取字符串 * @param original * @param count 要截取的字符串的字节位数 * @return * @throws UnsupportedEncodingException */ public static String subString(String original, int count) throws UnsupportedEncodingException { if(null!=original && !"".equals(original)) { original = new String (original.getBytes(), "GBK"); if(count>0 && count<original.getBytes().length) { StringBuffer buff = new StringBuffer(); char c; for(int i=0; i<count; i++) { c = original.charAt(i); buff.append(c); if(CutString.isChineseChar(c)) { //一个中文字符两个字节,所以对于一个字符串,遇到一个中文字符,顶两个字节。 --count; } } return buff.toString(); } } return original; } public static void main(String[] args) { String s = "我zwr爱Java"; System.out.println("原始字符串:" + s); try { System.out.println("截取1位" + CutString.subString(s, 1)); System.out.println("截取2位" + CutString.subString(s, 2)); System.out.println("截取3位" + CutString.subString(s, 3)); System.out.println("截取4位" + CutString.subString(s, 4)); System.out.println("截取6位" + CutString.subString(s, 6)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }

转载地址:http://aqwic.baihongyu.com/

你可能感兴趣的文章
Python排序算法之选择排序
查看>>
IOS之pageControl
查看>>
.net后台弹出提示消息代码
查看>>
【转载】perl接受传递参数的方法
查看>>
MySQL 多表查询实现分析
查看>>
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
查看>>
【转载】法线贴图Nomal mapping 原理
查看>>
prado 初步分析
查看>>
php 做守护进程1
查看>>
JS中实现JSON对象和JSON字符串之间的相互转换
查看>>
简单员工管理实例
查看>>
textwrap 模块
查看>>
SAP 到出XLS
查看>>
HSV
查看>>
JAVA程序中SQL语句无法传递中文参数
查看>>
Android学习_数据库查询使用rawQuery遇到的问题
查看>>
|待研究|委托付款的支付状态触发器
查看>>
redis集群中的主从复制架构(3主3从)
查看>>
初始Linux(其实之前接触过(*^__^*) 嘻嘻……)
查看>>
一些多项式的整理
查看>>