`

编程:编写一个截取字符串的函数,(网上流传的答案有的是错的)输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4

阅读更多
网上流传的答案是错误的:在此更正一下
public class StringSplit {
	public static void main(String[] args) throws Exception {
		String ss = "a很bc你好";
		System.out.println(splitString(ss, 1));
	}

	public static String splitString(String str, int byteLength)
			throws Exception {
		//如果字符串为空,直接返回
		if(str == null || "".equals(str)) {
			return str;
		}
		//用于统计这个字符串中有几个中文字符
		int wordCount = 0;
		//统一按照gbk编码来得到他的字节数组,因为不同的编码字节数组是不一样的。
		byte[] strBytes = str.getBytes("GBK");
		
		//如果只截取一位,而且第一位是中文字符时的处理
		if (byteLength == 1) {
			if (strBytes[0] < 0) {
				return str.substring(0, 1);
			}
		}
		//字符串中的一个中文会使得wordCount 加两次
//如果你这个字节取出来的是一个汉字也就是两个字节当中的一个的话val的值为负数
		for (int i = 0; i < byteLength; i++) {
			int val = strBytes[i];
			if (val < 0) {
				wordCount++;
			}
		}
		
		//如果传递的这个截取的位数没有截到半个中文上面,那么就按照byteLength - (wordCount / 2个长度进行截取
		if (wordCount % 2 == 0) {
			return str.substring(0, (byteLength - (wordCount / 2)));
		}
		//否则,我们就舍弃多出来的这一位 所以  -1 
		return str.substring(0, (byteLength - (wordCount / 2) - 1));

	}
}
分享到:
评论
3 楼 wzk527 2013-01-20  
很好
2 楼 lzh166 2010-04-15  
我,哈哈
1 楼 lzh166 2010-04-15  
String ss = "我很好yes";  
        System.out.println(splitString(ss, 2));
是多少?

相关推荐

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    在 `main` 方法中,我们创建了一个 `SplitString` 对象,并调用其 `SplitIt` 方法来截取字符串。 总结 本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该...

    字符串按照指定的字节数来截取

    了解这些方法后,我们就可以灵活地根据需求截取字符串中的特定字节数部分了。但要注意,字节截取可能会涉及到字符编码问题,因此在实际操作时要特别留意编码格式,避免出现乱码或者截取不完整的情况。

    TIA博途-字符转换为字符串以及截取字符串有效字符的具体方法示例.docx

    在TIA博途中,创建一个FB,定义输入和输出参数,如输入的字符数组和输出的字符串。在FB的实现部分编写上述逻辑,然后在OB1或其他需要的地方调用这个FB。 在测试和验证FB无误后,可以将其保存到全局库文件中,以便在...

    java 一个截取字符串的函数

    本题中,我们需要编写一个函数,该函数能够根据指定的字节数截取字符串,并确保不会出现汉字被截半的情况。这是一个涉及字符编码和边界条件处理的问题。 首先,我们来理解题目中的要求: 1. 函数接收两个参数,一个...

    delphi 实现截取字符串中中文+英文混合截取

    这个函数`SafeSubstring`接收字符串S、起始字节位置StartByte和截取的字节数LenBytes,返回一个从指定字节位置开始,长度为LenBytes字节的新字符串。注意,这个函数假设输入的都是有效的字节位置,没有进行边界检查...

    ORACLE字符串函数

    ORACLE 字符串函数 ORACLE 字符串函数是一组用于操作和处理字符串的函数,包括连接、截取、转换、查找、替换、去除空白等操作。 1. 字符串连接函数:`string || string` 该函数用于连接两个字符串,结果是一个新...

    按字节长度截取字符串(支持截取带HTML代码样式的字符串)

    首先,理解为什么需要按照字节长度而不是字符长度截取字符串。在处理非ASCII字符(如中文、日文等)时,一个字符可能占用多个字节。如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,...

    按byte截取字符串

    在某些场景下,我们可能需要按照特定的字节数来截取字符串,比如在网络传输、数据解析或编码转换时。本篇文章将详细探讨“按byte截取字符串”这一技术点,并通过两个Java文件——SliceByByteTest.java和SliceByByte....

    Java精确截取字符串.doc

    面试中可能会遇到类似的问题,要求编写一个函数来截取字符串,确保汉字不被截半。以下是一个简单的示例实现: ```java public class SplitString { private String str; private int byteNum; public ...

    php通用截取字符串.zip

    "php通用截取字符串"这个主题主要涉及如何在PHP中对字符串进行截取,以便获取我们感兴趣的特定部分。这通常用于显示预览、处理用户输入或者从长文本中提取关键信息。在PHP中,有多种方法可以实现字符串截取,下面...

    ASP截取固定长度字符串

    因此,在截取字符串时需要注意字符的字节数量,以避免截取到半个汉字。 #### 二、自定义函数StrByteLeft()详解 为了更好地解决中文字符串截取问题,可以自定义一个函数`StrByteLeft()`来实现更精确的截取。 1. **...

    TIA博途-截取有效字符串FB全局库文件-V17版本-GF-String-Slice.zip

    FB(Function Block)是PLC编程中的一个概念,它是一种结构化编程元素,类似于函数,但可以具有输入、输出和背景数据块。在这个库文件中,"GF-String-Slice"很可能是一个专门用于处理字符串的FB,用于从一个字符串中...

    C语言中常用的字符串处理函数

    这是一个非标准的函数,它从`src`所指向的位置开始,将数据复制到`dest`,直到遇到第一个等于`c`的字节或复制了`count`个字节为止,然后返回最后一个不等于`c`的字节的下一个位置的指针。如果没有找到`c`,则返回`...

    PHP中如何截取中文字符串

    总结,处理中文字符串截取时,理解字符编码和字符串处理函数的特性至关重要。PHP的mbstring扩展提供了强大且安全的方法来处理多字节字符,确保了中文字符串截取的准确性。在编写代码时,要时刻关注字符串的编码类型...

    java常用字符串函数集锦

    Java 中常用的字符串函数集锦 Java 中字符串是连串的字符,但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java 将字符串作为 String 类型对象来处理。将字符串作为内置的对象处理允许 Java 提供十分...

    db2字符串函数大全

    `SUBSTR` 函数用于从指定位置开始截取字符串的一部分。例如: - `SELECT SUBSTR('12345', 1, 2) FROM SYSIBM.SYSDUMMY1;` 返回 `'12'`。 - `SELECT LEFT('aaaaabbb', 2) FROM SYSIBM.SYSDUMMY1;` 返回 `'aa'`,与 `...

    impala中substr()截取中文字符串乱码的问题

    这个类应该包含一个方法,接收字符串、起始位置和长度作为参数,返回截取后的字符串。在处理中文字符时,我们需要确保按照字符而非字节进行截取。 2. **编译Java代码**:将Java源代码编译成.class文件。确保添加了...

    mysql常用字符串函数、字符串处理函数大全

    MySQL字符串函数是数据库操作中非常关键的一部分,它们用于处理和操作文本数据。以下是一些常见的MySQL字符串函数及其详细解释: 1. `ASCII(str)`:这个函数返回字符串`str`的第一个字符的ASCII码值。如果`str`为空...

    JAVA按字节截取字符串(适用于Unicode)

    7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...

    C#中字符串操作函数

    第二个`CutString`函数则更为简单,它直接通过`Substring`方法来截取字符串,如果输入字符串的长度超过指定长度,则返回前`len`个字符加上一个省略号。这通常用于显示预览或限制文本的显示长度。 ### 2. 字符串长度...

Global site tag (gtag.js) - Google Analytics