不可否认,这是一个蛋疼的笔试题:
编程:编写一个截取字符串的函数,输入为一个字符串和字节数,
* 输出为按字节截取的字符串。 但是要保证汉字不被截半个,
* 如“我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作为一门广泛使用的编程语言,其笔试题目涵盖了众多的知识点,包括基础语法、面向对象特性、集合框架、异常处理、多线程、IO流、网络编程、反射、JVM内存模型以及设计模式等方面。这份“Java经典笔试题目”文档...
* int available():返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。 * void close():关闭此输入流并释放与该流关联的所有系统资源。 * void mark(int readlimit):在此输入流中...
在Java编程语言中,了解一个对象占用的内存字节数对于优化内存使用和理解程序性能至关重要。本篇文章将深入探讨如何计算Java对象占用的内存字节数,以及影响这一数值的因素。 首先,Java对象在堆内存中由四个部分...
【压缩包子文件的文件名称列表】:"趋势java"这个文件名可能包含的是趋势科技笔试中的Java题目集,可能涵盖以下具体内容: 1. **Java基础**:包括变量、数据类型、运算符、流程控制(条件语句、循环语句)、字符串...
在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
以下是一个简单的示例: ```java File imageFile = new File("1.jpg"); FileInputStream fis = new FileInputStream(imageFile); byte[] imageData = new byte[(int) imageFile.length()]; fis.read(imageData...
【百度Java笔试题目详解】 1. **同月同日生人数最少问题** 在1900个人中,想要找到最少有多少人同月同日出生,我们首先要考虑一年有多少天。1900年不是闰年,因此有365天。如果忽略二月29日,那么至少会有365个人...
这些题目通常涵盖Java的基础概念、语法特性、内存管理、多线程、集合框架、异常处理、IO流、网络编程、设计模式等多个方面。 1. **Java基础** - 数据类型:Java分为基本数据类型(如int, double, boolean)和引用...
本部分将根据"JAVA笔试题目"这一主题,深入解析Java笔试中可能出现的重点知识领域。 1. **Java基础知识**: - **语法特性**:包括数据类型(基本类型与引用类型)、变量声明、运算符、流程控制(条件语句、循环...
Java语言笔试题目主要涵盖了许多核心概念,以下是根据题目内容详细解释的知识点: 1. **字节码文件**:Java源代码文件(`.java`)经过编译器编译后会生成字节码文件(`.class`)。这些字节码文件是Java虚拟机(JVM...
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
2. **读取字节**:调用InputStream的read()方法,将图片文件的每个字节读取到一个字节数组中。 3. **处理字节数组**:读取到的字节数组就是图片的二进制表示,可以根据需要进行传输或存储。 4. **关闭流**:在完成...
在Java编程语言中,将16进制的4字节数据转换为浮点数是常见的数据处理操作,尤其是在与硬件设备交互或者进行低级通信时。这个过程涉及到字节顺序的理解,以及Java中的数据类型转换。以下是关于这个主题的详细解释。 ...
7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...
例如,当你需要复制一个文件时,可以创建两个字节流,一个用于读取源文件,另一个用于写入目标文件。在`ByteIO.java`中,可能就包含了一个这样的文件复制示例,使用了`FileInputStream`和`FileOutputStream`,并且...
在准备字节跳动的Java笔试和面试时,掌握一系列关键知识点是至关重要的。这份"字节跳动Java笔试面试题汇总"包含了丰富的题目,旨在帮助求职者深入了解Java编程语言和字节跳动的技术栈需求。以下是一些核心Java知识点...
6. **IO流**:Java的输入输出流系统是另一个常考主题,包括文件操作、字符流和字节流、缓冲流、对象序列化等。理解流的分类和工作原理,以及如何进行文件读写和数据传输,对于解决实际问题至关重要。 7. **反射和...
对于字节码文件中的每一个元素,如魔数、版本号、常量池等,都需要根据它们的结构进行解读。例如,魔数`0xCAFEBABE`用于识别文件格式;版本号则指示了字节码的Java版本,影响后续解析规则。 6. **常量池详解** ...
《UC浏览器笔试-Java笔试题目解析-客户端与中间件工程师篇》 对于想要投身于UC浏览器,特别是寻求客户端工程师或中间件工程师职位的求职者来说,掌握扎实的Java基础至关重要。2014年5月14日在中山大学举行的UC...
这份"java期末测试笔试题目整合"提供了一次全面检验Java学习者基础知识的机会,涵盖了从基础语法到高级特性的广泛内容。以下是根据标题和描述可能涉及的Java知识点详解: 1. **Java基础语法**:这是学习Java的第一...