题目:

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

如果是charset(gb2312, GBK, BIG5), 汉字占两个字节,问题的关键在于考虑截取长度的最后一个字节,如果是属于一个汉字的第一个字节,忽略即可,而汉字每个字节前都是1,所以都是负数,采用if(byte[i]<0)判断是否是汉字的最后一个字节。

目前看到的最好的办法:

import java.io.UnsupportedEncodingException;

public class StringSpliter {

static void fun1(String str, int length)

throws UnsupportedEncodingException {

// System.out.println(str.getBytes().length);

byte[] bt = str.getBytes("gbk");

for (int i = 0; i < bt.length; i++) {

// 打印出字节数组中的值,可以看出只要是汉字[采用GBK编码时占两个字节/UTF-8占3个字节],并且为两个负整数

// 由于字节的第一位都是1,所以它就是由负数来表示的

System.out.println(bt[i]);

}

// 打印出按实际出入的字节数的所截字符串

// System.out.println(new String(bt,0,length));

// 判断最后一个是否为负,如果是负的则丢掉该字节

if (bt[length] < 0) {

System.out.println(new String(bt, 0, --length, "gbk"));

} else {

System.out.println(new String(bt, 0, length, "gbk"));

}

}

public static void main(String[] args) {

// StringSpliter.fun1("我ABC", 4);

try {

StringSpliter.fun1("我ABC汉DEF", 7);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

java中英文混合字符判断,java实现中英文混合字符截取方法相关推荐

  1. java代码固定电话判断,Java 固话和手机归属地判断

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class NumberUtil { //用于匹配手机号码 ...

  2. java空对象怎么判断,java怎么判断对象为空

    java怎么判断对象为空 发布时间:2020-06-10 09:34:15 来源:亿速云 阅读:116 作者:Leah java怎么判断对象为空?针对这个问题,今天小编总结这篇有关对象判断的文章,希望 ...

  3. java回文数字判断,java 实现判断回文数字的实例代码

    前言: 有这样一类数字,它们顺着看和倒着看是相同的数,例如:121.656.2332等,这样的数字就称为回文数字.编写一个Java程序,判断从键盘接收的数字是否为回文数字. 2.解题思想 从回文数字的 ...

  4. java 空数组如何判断,java判断数组是否为空

    java判断数组是否为空根据数组长度判断,如果为0,则为空,反之不是. (推荐学习:java课程)public class Main { public static void main(String[ ...

  5. c语言char字符判断条件,C语言入门 — 字符型char

    本篇文章将会学习字符类型,并会结合 Ascii码对照表进行学习, 首先我们先来看下 #include // 标准输入输出头文件 stdio.h int main(void) // main 函数,vo ...

  6. 英文、数字和汉字、日文的字符判断 英文占1个字符,中文汉字占2个字符 el-form表单验证规则

    需求:输入框输入如果是中文或者日文,表单验证长度需要除以2,如果是英文或者数字,则正常 需求奇葩,还要国际化可烦死我了,菜鸟又不敢跟产品顶嘴,哭了 捣鼓捣鼓总算好了,对字符限制做了一个封装 1.第一步 ...

  7. 字符串的处理:判断字符是否全为中文,判断是否含有中文字符,判断是否全为英文字符,判断是否含有英文字符,取出其中的中文字符,取出其中的英文字符

    public class QimoSendMessageTest { @Test     public void sendMessageTest22() {         String[] strA ...

  8. linux 字符下 上网,Linux下实现字符串截取方法总结(示例代码)

    Linux下实现字符串截取,大体上可以分为两种,使用命令实现截取,使用工具实现截取.具体截取方式如下: a.#截取,可以实现删除左边字符,保留右边字符 从左边第一个>开始,删除>及之前的所 ...

  9. 判断.java文件中getConnection与cleanUp数量是否匹配

    需求:查找未关闭的数据库连接. 两步走: 1.将给定目录下的及子目录下的 所有的给定后缀名的文件路径存到集合中. 2.使用正则表达式对每个文件进行匹配. package com.fanc.main;i ...

最新文章

  1. Docker selenium自动化 - 执行程序没反应、不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决
  2. 通俗易懂解释知识图谱
  3. RHEL6基础二十之RHEL文件挂载与卸载
  4. PostGIS容器运行
  5. android开发基本知识,Android应用开发基本知识点汇总
  6. 机器学习十大经典算法之K-Means聚类算法
  7. vue中使用html2canvas方法,设置背景,字体重叠问题解决方法
  8. 单片机CC2530学习笔记
  9. vscode中怎样格式化js代码_vscode格式化配置
  10. pr cpu100%_PR插件Sapphire2019.52安装教程
  11. 一文教会你使用 Neo4j 快速构建明星关系图谱
  12. 河北单招2021计算机类,2021河北省单招十大类专业
  13. 计算机在汉语言文学专业中的应用,浅谈信息技术在中专学校汉语言文学专业中的应用...
  14. 蓝桥杯研究生c语言试题答案,蓝桥杯试题_蓝桥杯 你有蓝桥杯历年的试题吗最好有参考答案啊 高职高专组C语言的 有的话麻烦你发给我 万分感谢_淘题吧...
  15. 脑机接口、开源和民主化增强意识的未来
  16. 采用IFDOToADOConnection 绑定数据到DataGriView
  17. 医院九阵系统服务器电源,九阵医院信息管理系统
  18. 基于MVC设计(Java Web程序)----图书馆系统
  19. 【centos7静默(无图形界面版)本地离线安装oracle11g,附带个人建议】
  20. Unreal Open Day 2017 参会总结——ACT(动作)游戏制作经验分享

热门文章

  1. 中国分省市县水土流失土地利用土壤侵蚀现状图及简介
  2. Unity Layout相关组件
  3. 程序员小吴的 3 月份文章汇总和一个小福利
  4. 文本挖掘(四万字总结篇:爬虫 - 文本预处理 - 高频词统计 - 聚类 - 情感分析)
  5. 一种高灵敏无线探听器电路设计
  6. 华为“南泥湾”计划浮出水面,下一步计划要养猪
  7. 【干货】AI顶会NeurlPS-2019强化学习方向论文速递(附链接):Github持续更新中...
  8. 【思路】扫雷MINE
  9. 开关磁阻电机控制仿真 matlab 开关磁阻电机传统控制:电流斩波控制、电压PWM控制、角度位置控制
  10. android 平板全屏,QQ浏览器安卓平板来啦!实现了真正的全屏,让阅读更加清静!...