- public class Test10 {
- /**
- * 10、 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
- * 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,
- * 输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
- *
- * @param args
- */
- public static void main(String[] args) {
- String str = "我ABC汉DEF";
- System.out.println("截取前的字符串:"+str);
- //传入到方法中,截取字符串
- String ss = split(str,6);
- System.out.println("截取后的字符串:"+ss);
- }
- public static String split(String str, int i) {
- // 定义一个变量接收截取的字符
- String str1 = "";
- // 将接收到的字符串变成字节数组。
- byte[] arr = str.getBytes();
- //当截取字节数大于1时
- if (i > 1) {
- //判断截取的字节的对应的元素是否是负数,如果是负数 <FONT color=red> <FONT size=4>这块有问题 当截取字节数<STRONG> i</STRONG> 是5的话,应该截取"我ABC",但是截取的是"我AB" 应该怎么修改呢</FONT></FONT>
- if (arr[i] < 0) {
- str1 = new String(arr, 0, --i);
- } else {
- str1 = new String(arr, 0, i);
- }
- //当截取字节是1,判断第一个字节也就是数组角标0的元素是否小于0;
- } else if (i == 1) {
- //小于0,不打印字节。 str1默认是""。
- if (arr[--i] < 0) {
- System.out.println(str1);
- } else {
- //不小于0,就赋值
- str1 = new String(arr, 0, i);
- }
- //如果截取字节小于1,就抛异常。
- } else {
- throw new RuntimeException("输入错误!!!请输入大于0的整数");
- }
- //将截取的字节返回。
- return str1;
- }
- }
复制代码 |