`

【一个笔试题目】java按字节进行截断

    博客分类:
  • java
 
阅读更多
不可否认,这是一个蛋疼的笔试题:
编程:编写一个截取字符串的函数,输入为一个字符串和字节数,
* 输出为按字节截取的字符串。 但是要保证汉字不被截半个,
* 如“我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编程基础以及在实际问题中的应用能力。这类题目通常涵盖多个方面,包括但不限于数据类型转换、字符串处理、字符编码与解码等核心概念。以下是对这些知识点的详细...

    深圳中软技术最新笔试题目

    这个问题要求我们编写一个函数,能够按字节截取字符串,但同时避免将汉字截断。解决方法通常涉及判断当前字节是否属于一个多字节字符(如UTF-8编码下的汉字),如果是,则需要考虑下一个字节。可以使用Java或Python...

    java笔试算法题及答案.doc

    第二个问题是编写一个函数,按照字节截取字符串,同时确保不会截断汉字。在处理中文字符时,需要注意每个汉字可能占用多个字节,通常是两个字节(UTF-8编码下)。提供的`isLetter()`函数用于判断字符是否为字母,但...

    Java面试题以及答案整理.pdf

    使用`java.io`包中的`FileReader`、`BufferedReader`等类进行文件读取,同时维护一个计数器记录行数。 19. **程序运行结果** 题目未给出具体程序,无法分析结果。 20. **抽象类和接口的区别** 抽象类是部分实现...

    常见的Java上机面试题

    **题目描述**:设计一个函数,接受一个字符串和一个整数作为参数,返回一个按照指定字节数截取的字符串,但需确保不会截断汉字(每个汉字占两个字节)。例如,对于输入"我ABC"和数字4,应返回"我AB",而非"我A"加上...

    zw_上海交通银行笔试编程题

    在笔试中,可能会遇到要求编写一个函数,能够在保持字符串完整性的前提下进行截取操作,尤其是涉及到中文字符时,需要理解Unicode编码和JAVA对多字节字符的支持。中文字符可能占用多个字节,因此简单的按字节数截取...

    美图最新秋招Java笔试题.docx

    - G1(Garbage-First)是Java虚拟机的一种垃圾回收器,它是一款并行且并发的垃圾收集器,具备多线程操作的能力(A正确)。 - G1设计的目标是在满足一定停顿时间限制的同时,尽可能提高垃圾回收的效率。因此,它...

    百度2014校园招聘 研发工程师笔试题(1).pdf

    - **二级间接地址索引:**每个二级间接地址索引指向一个包含 256 个一级间接地址索引的块,每个一级间接地址索引又指向 256 个数据块,即 \(256 \times 256 \times 256 = 16777216\) 字节的数据。 **正确答案:**...

Global site tag (gtag.js) - Google Analytics