欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 一个截取字符串的函数

程序员文章站 2024-03-05 21:30:01
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我abc”4,应该截为“我ab”,输入“我abc汉def”,6...

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

一、需要分析

1、输入为一个字符串和字节数,输出为按字节截取的字符串--------------》按照字节[byte]截取操作字符串,先将string转换成byte类型
2、汉字不可以截半----------------------------------------------------------------------------------------------------------》汉字截半的话对应字节的asc码为小于0的数值

二、技术难点

1、知道汉字截半的话对应字节的asc码为小于0的数值
2、对字符串操作应该都要面对的一个问题,字符串是否有效null, 字符串的长度0,1这种边界处理

代码实现:

package com.itheima;

/**
 * 10、 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
 * 但是要保证汉字不被截半个,如“我abc”4,应该截为“我ab”,输入“我abc汉def”,6,应该输出为“我abc”而不是“我abc+汉的半个”。
 * 
 * @author 281167413@qq.com
 */

public class test10 {

	public static void main(string[] args) {
		string srcstr1 = "我abc";
		string srcstr2 = "我abc汉def";

		splitstring(srcstr1, 4);
		splitstring(srcstr2, 6);
	}

	public static void splitstring(string src, int len) {
		int bytenum = 0;

		if (null == src) {
			system.out.println("the source string is null!");
			return;
		}

		bytenum = src.length();
		byte bt[] = src.getbytes(); // 将string转换成byte字节数组

		if (len > bytenum) {
			len = bytenum;
		}

		// 判断是否出现了截半,截半的话字节对于的asc码是小于0的值
		if (bt[len] < 0) {
			string substrx = new string(bt, 0, --len);
			system.out.println("substrx==" + substrx);
		} else {
			string substrx = new string(bt, 0, len);
			system.out.println("substrx==" + substrx);
		}
	}

}

处理结果:

substrx==我ab
substrx==我abc