一个java的面试题:
说明:
1.需要考虑中文的长度,utf-8是3个字节,gbk是2个字节
2.byte[pos]如果pos的位置是在中文上面的话,那么就是一个负数;如果是不中文的话,那么就是一个正数
/**/ /*
* 题目:
* 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
*
* 解释:
* 此处的编码方式应该是操作系统默认的GB编码,即汉字占2个字节且第一个字节的最高位是1,
* 如果理解为有符号数的话,就是负数;而英文占1个字节,符合ASC2码。
*/
class SplitString
{
private String str;
private int byteNum;
public SplitString() {}
public SplitString(String str, int byteNum)
{
this .str = str;
this .byteNum = byteNum;
}
public void splitIt()
{
byte bt[] = str.getBytes();
System.out.println( " Length of this String ===> " + bt.length);
if (byteNum >= 1 )
{
if (bt[byteNum] < 0 )
{
String substrx = new String(bt, 0 , -- byteNum);
System.out.println(substrx);
} else
{
String substrex = new String(bt, 0 ,byteNum);
System.out.println(substrex);
}
} else
{
System.out.println( " 输入错误!!!请输入大于零的整数: " );
}
}
}
public class TestSplitString
{
public static void main(String args[])
{
String str = " 我ABC汉DEF " ;
int num = 6 ;
SplitString sptstr = new SplitString(str,num);
sptstr.splitIt();
}
}
分享到:
相关推荐
字符串是由字符组成的序列,而“字符串按照指定的字节数来截取”这个话题,就是指如何在字符串中提取固定字节数的部分。在不同的编程语言中,都有相应的函数或方法来实现这一功能。 在Python中,可以使用内置的`...
2. **计算截取次数**:根据字符串长度和每次截取的字节数,计算出需要截取的次数。如果字符串长度不能被每次截取的字节数整除,则最后一次截取的长度会少于指定的字节数。 3. **实现截取逻辑**:遍历字符串,按照...
在 `SplitIt` 方法中,我们首先计算需要截取的 loop 数,然后使用 `for` 循环来截取指定字节的字符串。在循环中,我们使用 `substring` 方法来截取字符串,并将结果输出。 main 方法 在 `main` 方法中,我们创建了...
在进行Java编程时,我们经常会遇到需要按字节截取字符串的情况,尤其是在数据传输、网络通信以及对数据进行存储处理的时候。由于计算机内部存储和处理的都是二进制数据,对于非英文字符,在不同的编码(如UTF-8、GBK...
总的来说,处理带有汉字的字符串时,按照字节截取需要考虑字符编码,以避免破坏字符完整性。通过自定义方法并结合Java的字符编码功能,我们可以有效地解决这个问题。在实际开发中,理解字符编码和字节流的概念对于...
因此,如果我们想要根据字节数截取字符串,我们不能简单地用`substring()`,而是需要先计算字符串的字节数,然后根据这个字节数来定位截取的位置。 下面是一种可能的实现方式: 1. 使用`getBytes()`方法转换字符串...
这里需要注意的是,由于UTF-8编码可能造成字符串和字节数组的长度不一致,例如对于中文字符,“程”字在UTF-8编码下占用3个字节,因此如果截取长度不当时,最后一个字符可能无法形成一个完整的字符。 为了解决上述...
这种方法保证了每次截取的字符串字节数不会超过数据库字段允许的最大长度,并且由于使用了UTF-8编码,可以处理包括汉字在内的多种字符。 然而,这个方法的一个限制是它只适用于UTF-8编码。如果数据库字段使用的是...
- **输入参数**:该方法接收两个参数,`text`是待截取的字符串,`length`是目标截取的字节数长度。 - **异常处理**:使用`getBytes("GBK")`方法时,如果系统不支持GBK编码,会抛出`UnsupportedEncodingException`...
在Java中,可以通过字符串的getBytes方法来将字符串转换成字节数组。在转换过程中,需要明确指定使用哪种编码方式,因为不同的编码方式对中文字符的字节长度有不同的定义。例如,GB2312、GBK、GB18030、CP936和CNS...
因此,在计算总长度时,需要根据字符串的实际编码方式来进行字节数的累加。 在数据库操作中,字段长度限制是很常见的约束。如果字符串长度超过字段的最大允许长度,数据库会抛出错误。为了解决这个问题,我们需要在...
总的来说,Java中精确截取字符串涉及到字符编码、字节长度计算等多个方面。对于不同的场景,需要选择合适的方法,确保截取后的字符串既能满足长度要求,又能正确显示其中的文本内容。在实际开发中,可以根据项目需求...
在某些场景下,我们可能需要按照特定的字节数来截取字符串,比如在网络传输、数据解析或编码转换时。本篇文章将详细探讨“按byte截取字符串”这一技术点,并通过两个Java文件——SliceByByteTest.java和SliceByByte....
在Java编程中,有时我们需要对字符串进行精确截取,特别是在处理中文字符时,由于中文字符在内存中通常以双字节形式存储,因此简单的按照字符数截取可能会导致汉字被分割,影响显示效果。这个问题在文档标题“Java...
在Java编程语言中,字符串是极其重要且常用的数据类型,尤其在Android开发中更是不可或缺。字符串主要用于处理文本信息,如用户输入、文件内容、网络数据等。以下是对"JAVA 字符串应用笔记"中可能涉及的一些核心知识...
Java 中常用的字符串截取方法 在 Java 编程语言中,字符串截取是非常重要的操作之一。字符串截取可以用于获取字符串中的部分内容,或者将字符串分割成多个部分。本文将详细介绍 Java 中常用的字符串截取方法,包括 ...
本文介绍了几种不同的Java字符串截取方法,并对其进行了详细的分析。通过这些方法,我们可以在不同操作系统下有效地处理中英文混合的字符串。需要注意的是,在实际应用中,还需要结合具体需求对这些方法进行适当的...
当使用`substr()`或`substring()`截取中文字符串时,如果截取的起始位置和长度没有正确地对齐到字符边界,就可能导致部分字符的字节被截断,从而引发乱码。这种问题在其他数据库系统中也常见,尤其是那些不支持...
### JAVA字符串处理函数列表一览 在Java编程语言中,字符串处理是极其常见且重要的操作之一。字符串类`String`提供了丰富的内置方法来帮助开发者高效地完成各种字符串操作任务。本文将详细解读`String`类中的一些...
因此,如果直接按照字节数来截取字符串,可能会导致截取结果包含半个汉字,这显然是不希望看到的。 ### 实现细节分析 #### 1. 理解UTF-8编码 UTF-8是一种可变长度的Unicode编码格式,它支持所有Unicode字符,同时...