`
zsnlovewl
  • 浏览: 177093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

应该输出为“我ABC”而不是“我ABC+汉的半个”

 
阅读更多
import java.io.UnsupportedEncodingException;
public class StrSpliter {
/**
* 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,
* 输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
*
* @param args
*/
public static void main(String args[]) {
splitIt("我abc的DEF是大法师的", 12);
}
public static void splitIt(String str, int bytes) {
int hanZiBytes = 0;
int interceptBytes = 0;
byte strByte[] = null;
try {
strByte = str.getBytes("GBK");//GBK汉字占用2个字节
//strByte = str.getBytes("UTF-8");//UTF-8汉字占用3个字节

} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("未截取的字符串长度为:" + strByte.length);
for (int i = 0; i < bytes; i++) {
if (strByte[ i ] < 0) {
hanZiBytes++;
}
}
//汉字的字节数为偶数时,直接按总字节截取,汉字的字节数为奇数时 总字节数-1
interceptBytes = (hanZiBytes % 2 == 0) ? bytes : bytes - 1;
/*if(hanZiBytes % 3 == 0){//UTF-8所用的判断
interceptBytes=bytes;
}else if(hanZiBytes % 3 == 1){
interceptBytes=bytes-1;
}else if(hanZiBytes % 3 == 2){
interceptBytes=bytes-2;
}*/
try {
System.out.println("截取结果:" + new String(strByte, 0, interceptBytes, "GBK"));
//System.out.println("截取后:" + new String(strByte, 0, interceptBytes, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
<!--v:3.2-->
分享到:
评论

相关推荐

    JAVA按字节截取字符串(适用于Unicode)

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

    拆分带中文字符串.zip

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

    2017年华为硬件机试试题.pdf

    5. 功率放大器类型:乙类功率放大器工作半个周期,一个管子导通半个周期,另一个管子导通另一半周期。 6. 进制数值比较:将各选项转换为十进制,[1000011]2 = 75, [53]16 = 83, [64]10 = 64, [01100011]8421BCD = 99...

    二十一道面试程序.txt

    但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。 12.Java编程,打印昨天的当前时刻 13.文件读写,实现一个计数器; 14.用java代码实现冒泡...

    abc.zip_ABC_步进 马达

    "abc.zip_ABC_步进 马达"这个标题暗示了压缩包内可能包含有关步进电机控制的代码或资料,而"abc 步进_马达"的标签进一步确认了这一点。"abc.txt"是唯一列出的子文件,可能是源代码文件,记录了如何同时控制两个步进...

    abc.rar_ABC_电力电子_电力电子习题

    在这个压缩包“abc.rar_ABC_电力电子_电力电子习题”中,我们可以预见到它包含了一些关于电力电子的练习题目,这对于学习者来说是一个宝贵的参考资料。下面我们将深入探讨电力电子的核心知识点。 1. **电力电子的...

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    例如,如果输入字符串为 `"我 ABC"`,并且指定截取 4 个字节,则输出为 `"我 AB"`,而不是 `"我 AB"` 中的半个汉字。 SplitString 类 在本例中,我们定义了一个 `SplitString` 类,该类具有两个成员变量 `SplitStr...

    AutoWrite:Nuke 中的自动输出路径创建

    #自动写入 写入节点的半自动输出路径。... 从这条路径中,我们可以看到我有一个名为“testproj”的项目,它有一个缩写为“abc”的序列,并且在该序列中有一个名为“abc123”的镜头。 我正在制作该镜头的复

    你必须知道的495个C语言问题

    3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面的代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); ...

    《你必须知道的495个C语言问题》

    1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确...

    常见面试算法题目

    1. 1 - 100, 找出质数 ...不能打印出半个汉字 6. 设计4个线程,其中两个线程每次对j增加1,另外两个线程每次对j减少1 7. 给你List A,已知,如 3,1,4,9,5```````100. 让你求出里面的最大值与最小值。

    微机原理与接口技术期末试题ABC三卷及答案.docx

    《微机原理与接口技术》是一门深入探讨计算机硬件与软件之间交互的学科,涵盖了微处理器、总线、输入/输出(I/O)接口等多个关键领域。以下是对期末试题ABC三卷涉及知识点的详细解释: 1. **接口的基本功能**:接口...

    最新JAVA编程题全集_50题及答案

    写一个函数,例如:给你的 a b c 则输出 abc acb bac bca cab cba import java.util.ArrayList; import java.util.List; public class NumTest { public static void main(String[] args) { String s="ABCD";...

    java面试题

    但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 113 84.8. 将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一...

    2020—2021学年第二学期通信技术专业《电子技术》期末考试题试卷(试卷G).pdf

    9. **逻辑函数值**:F=ABC+ABC的逻辑值为1,因为ABC和ABC相加相当于ABC,只要有一个ABC为1,整体就为1。 10. **RS触发器**:在基本RS触发器中,触发脉冲消失后,其输出状态会保持原状态,除非新的触发信号改变状态...

    华为公司硬件研发类职位招聘面试题(笔试真题).DOC

    5. 乙类功率放大器的晶体管只在半个周期内工作,效率最高。 6. 数值最大的是D,[01100011]8421BCD,转换为十进制是117。 7. 8421码10010111表示的十进制数是151。 8. TTL非门输入端接10k欧电阻,门电路工作在截止...

    数字电路第四版第三章习题答案.pdf

    3.5 题目中,给定了两个二进制数A和B,当A大于B时,输出Y为11。这个问题可以通过比较每一位并进行逻辑运算来解决,最终得到Y = AC + BCD + ABD,即当A的大于B的位数多于B的大于A的位数时,Y为1。 3.6 题目要求判断...

    最新Java面试宝典pdf版

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

    2020—2021学年下学期计算机技术专业《电子技术》期末考试题试卷(试卷二).pdf

    8. 常见逻辑函数的值:逻辑函数F=ABC+ABC,由于ABC+ABC=ABC,如果ABC=1,则F=1;若ABC=0,则F=0,所以F的逻辑值取决于ABC,无法确定具体值。 9. 基本RS触发器特性和状态保持:在没有外部触发信号时,基本RS触发器会...

Global site tag (gtag.js) - Google Analytics