黑马程序员技术交流社区

标题: 关于字符串的问题?求高人? [打印本页]

作者: simonqian    时间: 2013-5-11 10:43
标题: 关于字符串的问题?求高人?
本帖最后由 simonqian 于 2013-5-11 19:57 编辑

编写一个程序,输入字节和字符,输出按字节的长度截取字符串?保证汉字不被截取
作者: long    时间: 2013-5-11 11:00
  1. public class CutString {

  2. /**
  3.   * @param input
  4.   *            输入字符串
  5.   * @param subLength
  6.   *            想要截取的字节数
  7.   * @throws UnsupportedEncodingException
  8.   */
  9.        
  10. public String subStrByBytes(String input, int subLength)
  11.         throws UnsupportedEncodingException {
  12.         // 总的字符数,A是一个字符,汉字也只是一个字符
  13.         int totalCharacter = input.length();
  14.         // 总的字节数
  15.         int totalBytes = input.getBytes("GBK").length;
  16.        
  17.         System.out.println("字符串\"" + input + "\"的总字节数是: " +
  18.                         input.getBytes("GBK").length + "\n" + "总字符数是: " +
  19.                         totalCharacter);
  20.         if(subLength > totalBytes){
  21.                 System.err.println("输入长度错误!请重新输入。");
  22.                 return "";
  23.         }
  24.        
  25.         int current = 0;
  26.         String result = "";
  27.        
  28.         // 遍历字符串,直到截取目标长度
  29.         for (int i = 0; i < totalCharacter; i++) {
  30.                 String tmp = input.substring(i, i + 1);
  31.                 int c_len = tmp.getBytes("GBK").length;
  32.                 if (current < subLength) {
  33.                         current += c_len;
  34.                         result += tmp;
  35.                 }
  36.         }
  37.         System.out.println("截取" + subLength + "个字节后的结果是: " + result + "\n");

  38.         return result;
  39. }

  40. public static void main(String[] args) throws UnsupportedEncodingException {
  41.         String str1 = "我ABC";
  42.         int len1 = 4;
  43.         String str2 = "我ABC汉DEF";
  44.         int len2 = 6;
  45.        
  46.         Test10 demo1 = new Test10();
  47.         //打印字符串我"我ABC"截取4个字节的结果
  48.         String out1 = demo1.subStrByBytes(str1, len1);
  49.        
  50.         Test10 demo2 = new Test10();
  51.         //打印字符串我"我ABC汉DEF"截取6个字节的结果
  52.         String out2 = demo2.subStrByBytes(str2, len2);
  53.        
  54.         }
  55. }
复制代码

作者: 8047107    时间: 2013-5-11 11:13
好难。我才入门 怎么什么都看不懂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2