编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按照字节数截取的字符串,代码如下所示:(转载)
String subString(String str,int len){
if(str == null && "".equals(str)){
return null;
}
//将字符串中的char数组转换成指定编码方式的byte数组的函数
byte[] strBytes = null;
try {
strBytes = str.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//得到字符串的长度,判断截取字符串的长度是否在判断的范围内,否则返回原串
int strLen = strBytes.length;
if(len >= strLen || len < 1){
return str;
}
int count = 0;
for(int i=0; i<len; i++){
//将每个字节数组转换为整型数,因为后面根据值的正负来判断是否为汉字
int value = strBytes[i];
//如果是汉字(负),则统计截取字符串中的汉字所占字节数
if(value < 0){
count++;
}
}
//依据判断给定的字符串是否含有汉字,利用String类的substring()方法来截取不同的长度
//根据所统计的字节数,判断截取到字符是否为半个汉字,奇数为半个汉字
if(count % 2 !=0){
//如果在截取长度为1时,则将该汉字取出,
//其他情况则不截取这里的截取长度则按字符长度截取(截取字节长度数-截取汉字字节数/2-截取到的半个汉字的字节数)
len = (len == 1)?len:len-count/2-1;
}else{
//截取字符长度为字节长度-汉字所占字节长度/2(汉字占两个字节)
len = len-(count/2);
}
return str.substring(0,len);
}
注意:获取字符串的bytes,bytes数组中汉字的byte值为负数,这是判断汉字的一个依据
分享到:
相关推荐
在 `main` 方法中,我们创建了一个 `SplitString` 对象,并调用其 `SplitIt` 方法来截取字符串。 总结 本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该...
了解这些方法后,我们就可以灵活地根据需求截取字符串中的特定字节数部分了。但要注意,字节截取可能会涉及到字符编码问题,因此在实际操作时要特别留意编码格式,避免出现乱码或者截取不完整的情况。
在TIA博途中,创建一个FB,定义输入和输出参数,如输入的字符数组和输出的字符串。在FB的实现部分编写上述逻辑,然后在OB1或其他需要的地方调用这个FB。 在测试和验证FB无误后,可以将其保存到全局库文件中,以便在...
本题中,我们需要编写一个函数,该函数能够根据指定的字节数截取字符串,并确保不会出现汉字被截半的情况。这是一个涉及字符编码和边界条件处理的问题。 首先,我们来理解题目中的要求: 1. 函数接收两个参数,一个...
这个函数`SafeSubstring`接收字符串S、起始字节位置StartByte和截取的字节数LenBytes,返回一个从指定字节位置开始,长度为LenBytes字节的新字符串。注意,这个函数假设输入的都是有效的字节位置,没有进行边界检查...
首先,理解为什么需要按照字节长度而不是字符长度截取字符串。在处理非ASCII字符(如中文、日文等)时,一个字符可能占用多个字节。如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,...
在某些场景下,我们可能需要按照特定的字节数来截取字符串,比如在网络传输、数据解析或编码转换时。本篇文章将详细探讨“按byte截取字符串”这一技术点,并通过两个Java文件——SliceByByteTest.java和SliceByByte....
6. 获取字符串字节数函数:`octet_length(string)` 该函数返回字符串中的字节数。例如,`octet_length('jose')`将返回`4`。 7. 字符串查找函数:`position(substring in string)` 该函数返回字符串中指定子串的...
面试中可能会遇到类似的问题,要求编写一个函数来截取字符串,确保汉字不被截半。以下是一个简单的示例实现: ```java public class SplitString { private String str; private int byteNum; public ...
"php通用截取字符串"这个主题主要涉及如何在PHP中对字符串进行截取,以便获取我们感兴趣的特定部分。这通常用于显示预览、处理用户输入或者从长文本中提取关键信息。在PHP中,有多种方法可以实现字符串截取,下面...
7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...
总结,处理中文字符串截取时,理解字符编码和字符串处理函数的特性至关重要。PHP的mbstring扩展提供了强大且安全的方法来处理多字节字符,确保了中文字符串截取的准确性。在编写代码时,要时刻关注字符串的编码类型...
这是一个非标准的函数,它从`src`所指向的位置开始,将数据复制到`dest`,直到遇到第一个等于`c`的字节或复制了`count`个字节为止,然后返回最后一个不等于`c`的字节的下一个位置的指针。如果没有找到`c`,则返回`...
这个类应该包含一个方法,接收字符串、起始位置和长度作为参数,返回截取后的字符串。在处理中文字符时,我们需要确保按照字符而非字节进行截取。 2. **编译Java代码**:将Java源代码编译成.class文件。确保添加了...
因此,在截取字符串时需要注意字符的字节数量,以避免截取到半个汉字。 #### 二、自定义函数StrByteLeft()详解 为了更好地解决中文字符串截取问题,可以自定义一个函数`StrByteLeft()`来实现更精确的截取。 1. **...
`SUBSTR` 函数用于从指定位置开始截取字符串的一部分。例如: - `SELECT SUBSTR('12345', 1, 2) FROM SYSIBM.SYSDUMMY1;` 返回 `'12'`。 - `SELECT LEFT('aaaaabbb', 2) FROM SYSIBM.SYSDUMMY1;` 返回 `'aa'`,与 `...
Java 中常用的字符串函数集锦 Java 中字符串是连串的字符,但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java 将字符串作为 String 类型对象来处理。将字符串作为内置的对象处理允许 Java 提供十分...
FB(Function Block)是PLC编程中的一个概念,它是一种结构化编程元素,类似于函数,但可以具有输入、输出和背景数据块。在这个库文件中,"GF-String-Slice"很可能是一个专门用于处理字符串的FB,用于从一个字符串中...
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...