不可否认,这是一个蛋疼的笔试题:
编程:编写一个截取字符串的函数,输入为一个字符串和字节数,
* 输出为按字节截取的字符串。 但是要保证汉字不被截半个,
* 如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,
* 应该输出为“我ABC”而不是“我ABC+汉的半个”。
package com.duduli.li;
import java.util.Arrays;
public class CutString {
/**
* 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,
* 输出为按字节截取的字符串。 但是要保证汉字不被截半个,
* 如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,
* 应该输出为“我ABC”而不是“我ABC+汉的半个”。
*/
public void cutString(String s,int length){
byte [] b = s.getBytes();
byte [] str;
System.out.println(new String(Arrays.copyOfRange(b, 0, 1)));
// 最后一个byte在A--Z和a--z之间的情况
System.out.println((b[length-2]>"A".getBytes()[0]&&b[length-2]<"Z".getBytes()[0]));
System.out.println((b[length-2]>"a".getBytes()[0]&&b[length-2]<"z".getBytes()[0]));
if((b[length-1]>"A".getBytes()[0]&&b[length-1]<"Z".getBytes()[0])||
(b[length-1]>"a".getBytes()[0]&&b[length-1]<"z".getBytes()[0])){
str = Arrays.copyOfRange(b, 0, length);
// 如果不在的话就考虑,倒数第二个byte是不是在A--Z和a--z之间
}else if(!((b[length-2]>"A".getBytes()[0]&&b[length-2]<"Z".getBytes()[0])||
(b[length-2]>"a".getBytes()[0]&&b[length-2]<"z".getBytes()[0]))){
str = Arrays.copyOfRange(b, 0, length);
}else{
str = Arrays.copyOfRange(b, 0, length-1);
}
System.out.println(new String(str));
}
/**\\u4e00-\\u9fa5 这是汉字范围
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CutString cs = new CutString();
String s = "wodfe好dewod我dek";
cs.cutString(s, 7);
}
}
分享到:
相关推荐
主要介绍了计算一个Java对象占用字节数的方法,较为详细的分析了Java中各类对象所占用的字节数,需要的朋友可以参考下
关于java按字节截取带有汉字的字符串的解法.不错的一个程序。我也是从高手那拿来的,觉得不错,传上来给感兴趣的朋友学习学习。
Java实现字节流与图片的转化
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
Java字节流 .pdf 学习资料 复习资料 教学资源
7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...
字节跳动Java笔试面试题汇总
我测试了一个前端时间开发的一个网络通讯工具,其中用到了很多java15的特性,例如泛形,增强循环,静态引入等功能,以及jdk15独有的类文件,例如StringBuilder等。通过该工具进行转换,可以完美的运行在java14环境...
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元...字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。
一般截取字符串是按照字符截取的,现在这个代码是按照字节截取字符
JAVA的期末考试笔试题目,里面有两套整理的优质试卷和一份PDF解析,老师发给我们的,分享出来,希望又想要深入学习Java的同学能好好利用
字节跳动 java 面试题目,包括一面,二面,三面, hr 面试等等。希望对你有所帮助
这是一个java 关于字节流部分的功能实现相关代码
Java中的字节流.
深入Java编程_Java的字节代码.pdf
java字节码加密
java字节码反编译工具 JAD+FrontEnd
使用链式编程写法实现Java中byte数组的拼接。例如byte[] bytes = ByteUtils.get().add(0x41).add(07).add(11).add("15288930000").add(0x45).toArray();更灵活用法请参考Mybytes
前言 我们都知道,Java程序最终是转换成class文件执行在虚拟机上的,那么class文件是个怎样的结构,虚拟机又是如何处理去执行class文件里面的内容呢,这篇文章带你深入理解Java字节码...首先,编写一个简单的Java源码:
压缩包中包含完整的源代码工程和一个可执行文件。该系统乃本人本科毕业设计作品,拿来和大家分享,代码结构组织很简单。对于反编译出java源码还未能做到,主要是由于条件语句本人无法想出通用的反编译算法,不过对于...