亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java中如而后按字節截取字符串

2023-06-10 12:43:26
字體:
來源:轉載
供稿:網友

有時我們需要按字節數來截取一個字符串,即輸入為一個字符串和字節數,輸出為按字節截取的字符串。但是要保證漢字不被截半個,如"我ABC"4,應該截為"我AB",輸入"我ABC漢DEF",6,應該輸出為"我ABC"而不是"我ABC+漢的半個",相關源代碼如下所示:

  public static String substring(String str, int toCount,String more)

  {

  int reInt = 0;

  String reStr = "";

  if (str == null)

  return "";

  char[] tempChar = str.toCharArray();

  for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) {

  String s1 = str.valueOf(tempChar[kk]);

  byte[] b = s1.getBytes();

  reInt += b.length;

  reStr += tempChar[kk];

  }

  if (toCount == reInt || (toCount == reInt - 1))

  reStr += more;

  return reStr;

  }

Web應用程序在瀏覽器中顯示字符串時,由于顯示長度的限制,常常需要將字符串截取后再進行顯示。但目前很多流行的語言,如C#、Java內部采用的都是 Unicode 16(UCS2)編碼,在這種編碼中所有的字符都是兩個字符,因此,如果要截取的字符串是中、英文、數字混合的,就會產生問題,如下面的字符串:

String s = "a加b等于c,如果a等1、b等于2,那么c等3";

上面的字符串既有漢字,又有英文字符和數字。如果要截取前6個字節的字符,應該是”a加b等",但如果用substring方法截取前6個字符就成了"a 加b等于c"。產生這個問題的原因是將substring方法將雙字節的漢字當成一個字節的字符(UCS2字符)處理了。要解決這個問題的方法是首先得到該字符串的UCS2編碼的字節數組,如下面的代碼如下:

byte[] bytes = s.getBytes("Unicode");

由于上面生成的字節數組中前兩個字節是標志位,bytes[0] = -2,bytes[1] = -1,因此,要從第三個字節開始掃描,對于一個英文或數字字符,UCS2編碼的第二個字節是相應的ASCII,第一個字節是0,如a的UCS2編碼是0  97,而漢字兩個字節都不為0,因此,可以利于UCS2編碼的這個規則來計算實際的字節數,該方法的實現代碼如下:

public static String bSubstring(String s, int length) throws Exception

  {

  byte[] bytes = s.getBytes("Unicode");

  int n = 0; // 表示當前的字節數

  int i = 2; // 要截取的字節數,從第3個字節開始

  for (; i < bytes.length && n < length; i++)

  {

  // 奇數位置,如3、5、7等,為UCS2編碼中兩個字節的第二個字節

  if (i % 2 == 1)

  {

  n++; // 在UCS2第二個字節時n加1

  }

  else

  {

  // 當UCS2編碼的第一個字節不等于0時,該UCS2字符為漢字,一個漢字算兩個字節

  if (bytes[i] != 0)

  {

  n++;

  }

  }

  }

  // 如果i為奇數時,處理成偶數

  if (i % 2 == 1)

  {

  // 該UCS2字符是漢字時,去掉這個截一半的漢字

  if (bytes[i - 1] != 0)

  i = i - 1;

  // 該UCS2字符是字母或數字,則保留該字符

  else

  i = i + 1;

  }

  return new String(bytes, 0, i, "Unicode");

  }

  下面代碼使用了bSubstring方法:

  String s = "a加b等于c,如果a等1、b等于2,那么c等3";

  System.out.println(bSubstring(s, 6));

  上面的代碼截取的字符串是"a加b等"。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲中文字幕国产精品| 亚洲香蕉av在线一区二区三区| 日韩欧美极品在线观看| 久久不射热爱视频精品| 91中文字幕在线观看| 国产一区二区在线免费视频| 亚洲裸体xxxx| 红桃视频成人在线观看| 亚洲女同精品视频| 一个人看的www欧美| 精品亚洲aⅴ在线观看| 清纯唯美亚洲综合| 一本大道香蕉久在线播放29| 国产精品成人va在线观看| 亚洲一区av在线播放| 久久久久久香蕉网| 性欧美长视频免费观看不卡| 国内精品视频久久| 91在线无精精品一区二区| 亚洲欧美成人一区二区在线电影| 91性高湖久久久久久久久_久久99| 91精品啪aⅴ在线观看国产| 九九久久精品一区| 亚洲国产精品yw在线观看| 91九色单男在线观看| 午夜精品一区二区三区在线播放| 欧美视频在线免费看| 久久久久在线观看| 亚洲激情 国产| 亚洲精品一区中文字幕乱码| 一区二区三欧美| 欧美xxxx综合视频| 国产精品r级在线| 欧美性xxxx在线播放| 日本免费一区二区三区视频观看| 欧美日韩裸体免费视频| 777国产偷窥盗摄精品视频| 国产精品丝袜视频| 91在线中文字幕| 日韩成人黄色av| 97超碰国产精品女人人人爽| 亚洲美女av在线播放| 久久久久久久激情视频| 亚洲乱码av中文一区二区| 一区二区三区视频免费在线观看| 欧美性猛交99久久久久99按摩| 国产精品99蜜臀久久不卡二区| 中文字幕亚洲图片| 久久91亚洲精品中文字幕奶水| 久久久人成影片一区二区三区观看| 亚洲国内精品视频| 欧美激情一二三| 久久精品视频网站| 黑人巨大精品欧美一区二区| 欧美激情2020午夜免费观看| 国产日韩综合一区二区性色av| 国产一区二区三区三区在线观看| 欧美激情a∨在线视频播放| 久久免费高清视频| 亚洲国产成人爱av在线播放| 夜夜嗨av色综合久久久综合网| 欧美日韩国产va另类| 57pao成人国产永久免费| 日韩国产精品亚洲а∨天堂免| 国产97人人超碰caoprom| 国产精品久久久久久久久借妻| 国产97在线播放| 国产91网红主播在线观看| 国产精品自拍偷拍视频| 久久精视频免费在线久久完整在线看| 欧美激情一二三| 亚洲精品中文字幕有码专区| 亚洲日韩欧美视频一区| 国产精品人成电影| 精品视频在线导航| 欧美精品久久久久久久久| 中文字幕日韩精品在线观看| 国模私拍视频一区| 成人有码在线播放| 中文字幕一精品亚洲无线一区| 成人黄色片网站| 精品国产乱码久久久久久婷婷| 亚洲国产成人精品女人久久久| 国产精品av在线播放| 亚洲在线一区二区| 欧美大秀在线观看| 成人精品久久av网站| 亚洲小视频在线观看| 久久琪琪电影院| 18久久久久久| 国产视频精品va久久久久久| 国产日韩一区在线| 欧美日韩精品中文字幕| 国产女精品视频网站免费| 日本精品久久久久影院| 久久精彩免费视频| 日韩黄色在线免费观看| 亚洲国产美女精品久久久久∴| 久久久在线观看| 亚洲精品久久久久久久久久久| 国产精品狠色婷| 久久午夜a级毛片| 国产精品美女午夜av| 欧美视频二区36p| 欧美专区第一页| 国产精品h片在线播放| 精品一区二区三区四区在线| 一区二区三区视频在线| 国模私拍一区二区三区| 日韩激情视频在线| 亚洲欧美精品中文字幕在线| 国产精品电影久久久久电影网| 精品高清美女精品国产区| 欧美日韩国产一区二区| 国产成人高潮免费观看精品| 亚洲日本成人网| 黄网站色欧美视频| 欧美激情视频一区二区三区不卡| 最近中文字幕日韩精品| 亚洲欧美精品一区二区| 欧美日韩国产中文精品字幕自在自线| 日韩av网站在线| 欧美性猛xxx| 精品国产依人香蕉在线精品| 91久久中文字幕| 亚洲高清免费观看高清完整版| 亚洲国产成人91精品| 久久久久久中文字幕| 亚洲精品wwww| 欧美激情精品久久久久久黑人| 国产一区二区三区中文| 亚洲最大福利视频| 亚洲图中文字幕| 欧美精品中文字幕一区| 美日韩精品免费观看视频| 欧美日韩国产精品专区| 亚洲大胆人体视频| 国产精品久久久久久中文字| 精品久久久久久中文字幕| 日韩视频免费中文字幕| www.日韩视频| 国产美女久久精品香蕉69| 97在线精品国自产拍中文| 欧美综合在线第二页| 亚洲天堂一区二区三区| 国产精品久久久久秋霞鲁丝| 欧美精品日韩www.p站| 精品久久香蕉国产线看观看gif| 福利视频一区二区| 国产裸体写真av一区二区| 亚洲成av人乱码色午夜| 欧美精品久久久久a| 亚洲高清免费观看高清完整版| 亚洲精品国偷自产在线99热| 亚洲精品suv精品一区二区| 成人中文字幕+乱码+中文字幕| 国产精品美女久久久久久免费| 亚洲国产精品一区二区三区| 欧美日韩人人澡狠狠躁视频| 欧美激情精品久久久久久免费印度| 久久久久久久久久久成人| 日韩精品免费在线视频| 亚洲精品福利视频| 97高清免费视频|