编写一个截取字符串的函数,输入为一个字符串,截取开始地址,截取字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,

如“我ABC”,0,4,应该截为“我AB”,输入“我ABC汉DEF”,1,4,应该输出为“ABC”而不是“ABC+汉的半个”。

import java.io.UnsupportedEncodingException;

public class SubStr {

public static String bSubString(String str,int be,int length) throws UnsupportedEncodingException{

byte[] bytes;

bytes=str.getBytes("Unicode");

int z=be=2*be+2;

int n=0,count=0;

for(;be<bytes.length&&n<length;n++,be++){

if(bytes[be]==0){

n--;

}

count++;

}

System.out.println(be+" "+count+" "+n);

if(count%2==1){

if(bytes[count-1]!=0){

count--;

}else if(bytes[count-1]==0){

count++;

}

}

return new String(bytes,z,count,"Unicode");

}

public static void main(String[] args) {

String str="中国abc";

try {

System.out.println(bSubString(str,0,5));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

}

java按照字节切割字符串,解决汉字的问题的更多相关文章

  1. Java 按字节获得字符串(中文)长度

    引自:http://songjianyong.iteye.com/blog/1552973 package cn.com.songjy.test; import java.io.Unsupported ...

  2. java使用split切割字符串的时候,注意转义字符

    今天在做项目的时候发现一个奇怪的问题 File file = new File("d:\\a.txt"); BufferedReader br = new BufferedRead ...

  3. Java按字节截取字符串(GBK编码、UTF-8编码实现)

    package FileDemo; import java.io.IOException; public class CutStringTest { /** * @param args * @thro ...

  4. Java通过字节分割字符串

    一.题目描述: 一道Java笔试题.将字符串按给定的字节数进行分割,输出分割后的字符串.要求汉字不能进行拆分,如“a中国”不能拆分成“a+中的一半”. 二.解题思路: 首先利用String类的subs ...

  5. Java 按字节计算字符串的长度

       在<从后向前截取指定长度的字符串>中介绍了如何截取字符串,本文介绍如何统计字符串的字节长度. import org.slf4j.Logger; import org.slf4j.Lo ...

  6. java反序列化字节转字符串工具

    https://github.com/NickstaDB/SerializationDumper SerializationDumper-v1.1.jar 用法 : java -jar Seriali ...

  7. C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等

    C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...

  8. java基础知识回顾之---java String final类普通方法的应用之“按照字节截取字符串”

    /*需求:在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符.但对应的字节数不同,一个汉字占两个字节.定义一个方法,按照最大的字节数来取子串.如:对于“ab你好”,如果取三 ...

  9. Java中根据字节截取字符串

    一.简介 为了统一世界各国的字符集,流行开了Unicode字符集,java也支持Unicode编码,即java中char存的是代码点值,即无论是‘A’还是‘中’都占两个字节. 代码点值:与Unicod ...

随机推荐

  1. [HNOI2005]汤姆的游戏

    嘟嘟嘟 直接O(n ^ 2)暴力判断就行了. 对于圆,判断该点和圆心的距离是否小于半径. 然而为啥我这么写编译不过: scanf("%lf%lf%lf%lf", &a[++ ...

  2. Windows启动控制台登录模式

    效果如下: 实现代码: Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Lo ...

  3. javascript:apply方法 以及和call的区别 (转载)

    javascript:apply方法   1.        apply和call的区别在哪里 2.        什么情况下用apply,什么情况下用call 3.        apply的其他巧 ...

  4. 正则表达式利用grep和sed处理日志内容,获取所需的内容

    app.log文件内容: 2014-09-11 00:00:01,516 INFO [com.tt.bb.thread.Control] - Socket连接:/182.105.83.33:53217 ...

  5. [NOI2001]炮兵阵地 【状压DP】

    #\(\color{red}{\mathcal{Description}}\) \(Link\) 司令部的将军们打算在\(N \times M\)的网格地图上部署他们的炮兵部队.一个\(N \time ...

  6. MyBatis的缓存分析

    一:MyBatis缓存简介 MyBatis支持声明式数据缓存(declarative data caching).当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段 ...

  7. java核心技术-多线程之线程基础

    说起线程,无法免俗首先要弄清楚的三个概念就是:进程.线程.协程.OK,那什么是进程,什么是线程,哪协程又是啥东西.进程:进程可以简单的理解为运行在操作系统中的程序,程序时静态代码,进程是动态运行着的代 ...

  8. koa2学习笔记02 - 给koa2添加系统日志 —— node日志管理模块log4js

    前言 没有日志系统的后台应用是没有灵魂的, 平时工作中每次我们遇到接口报错的时候, 都会叫后台的童鞋看下怎么回事, 这时后台的童鞋都会不慌不忙的打开一个骚骚的黑窗口. 一串噼里啪啦的命令输进去, 哐哐 ...

  9. # 20155229 2016-2017-2 《Java程序设计》第七周学习总结

    20155229 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装 ...

  10. 20155306 白皎 《网络攻防》 Exp2 后门原理与实践

    20155306 白皎 <网络攻防> Exp2 后门原理与实践 一.实践基础 后门程序又称特洛伊木马,其用途在于潜伏在电脑中,从事搜集信息或便于黑客进入的动作.后程序和电脑病毒最大的差别, ...