`

java算法按字节数截取字符串,汉字不可截开

阅读更多

 /* 
 * 题目:
 * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我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 )   //最后一个字节为汉字的第一个字节,高位为1,为负数
   
 {
    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();
 }
 

}

分享到:
评论

相关推荐

    字符串 截取

    因此,如果直接按照字节数来截取字符串,可能会导致截取结果包含半个汉字,这显然是不希望看到的。 ### 实现细节分析 #### 1. 理解UTF-8编码 UTF-8是一种可变长度的Unicode编码格式,它支持所有Unicode字符,同时...

    Java经典面试题(带答案)

    编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个。这道题考察了Java中的字符串处理和 Unicode 知识。 知识点8: 排序算法 排序问题需要列举出各种排序...

    JAVA_API1.6文档(中文)

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    常见的Java上机面试题.docx

    - 方法`Interception()`负责实现截取字符串的功能,其中利用了正则表达式来判断字符是否为汉字。 2. **问题分析**: - 代码中出现了大量不完整的代码片段,导致无法直接运行。 - 正确实现这一功能需要重写这些...

    Java 1.6 API 中文 New

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    java面试题.doc

    编写函数根据字节长度截取字符串,需注意汉字占用多个字节,确保截取时不破坏汉字。可以使用`getBytes()`和`substring()`方法配合处理。 5. **多线程编程**: 多线程编程中,创建多个线程进行同步和异步操作。...

    2014年Java最全面试题以及答案.

    14. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要正确处理汉字等多字节字符,可以使用String类的getBytes方法配合指定的字符编码,例如UTF-8或GBK来处理字符串的字节表示。 ...

    Java面试题

    编写一个函数,根据输入的字节数截取字符串,同时避免截断汉字。 17. **打印昨天的当前时刻**: 使用Java的日期时间API来获取昨天的日期,然后设置为当前时间。 这些面试题覆盖了Java的基础语法、面向对象特性、...

    Java面试题以及答案整理.pdf

    16. **截取字符串的函数** 编写这样的函数需要考虑字符编码和字符串边界问题,确保汉字不被截断。 17. **打印昨天的当前时刻** 使用`java.util.Calendar`或`java.time`包中的类来获取昨天的日期,并格式化输出。 ...

    java api最新7.0

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    Java面试宝典-经典

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

    JavaAPI中文chm文档 part2

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    Java面试题整理精华

    此题要求设计一个函数,根据字节数截取字符串,同时保证汉字不会被截断。 #### 17. 指出下面程序的运行结果。 这类题目通常考察对Java语法和逻辑的理解,需要分析代码,预测其执行流程和输出结果。 #### 18. 抽象...

    java面试题大全(2012版)

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

    java面试题

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

    java面试试题宝典.doc

    13. **截取字符串**: 要确保汉字不被截断,需要检查字符边界,确保在字节截取时不跨越多字节字符。 14. **打印昨天的当前时刻**: 使用`java.util.Calendar`或`java.time`包中的类可以获取昨天的日期并格式化为...

    Java企业面试题整理及答案

    编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。** 实现此功能需要注意处理中文字符,因为中文占两个字节。可以使用 `getBytes()` 和 `new String()` 方法来实现: ```...

    JavaAPI1.6中文chm文档 part1

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

Global site tag (gtag.js) - Google Analytics