成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Java截取字符串的方法

開發 后端
本文講述如何用Java實現按字節長度截取字符串。如果要截取的字符串是中、英文、數字混合的,往往產生問題。解決這個問題的方法是首先得到該字符串的UCS2編碼的字節數組。

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

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

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

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

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

  1. public static String bSubstring(String s, int length) throws Exception  
  2. {  
  3.  
  4.     byte[] bytes = s.getBytes("Unicode");  
  5.     int n = 0// 表示當前的字節數  
  6.     int i = 2// 要截取的字節數,從第3個字節開始  
  7.     for (; i < bytes.length && n < length; i++)  
  8.     {  
  9.         // 奇數位置,如3、5、7等,為UCS2編碼中兩個字節的第二個字節  
  10.         if (i % 2 == 1)  
  11.         {  
  12.             n++; // 在UCS2第二個字節時n加1  
  13.         }  
  14.         else 
  15.         {  
  16.             // 當UCS2編碼的第一個字節不等于0時,該UCS2字符為漢字,一個漢字算兩個字節  
  17.             if (bytes[i] != 0)  
  18.             {  
  19.                 n++;  
  20.             }  
  21.         }  
  22.     }  
  23.     // 如果i為奇數時,處理成偶數  
  24.     if (i % 2 == 1)  
  25.  
  26.     {  
  27.         // 該UCS2字符是漢字時,去掉這個截一半的漢字  
  28.         if (bytes[i - 1] != 0)  
  29.             i = i - 1;  
  30.         // 該UCS2字符是字母或數字,則保留該字符  
  31.         else 
  32.             i = i + 1;  
  33.     }  
  34.  
  35.     return new String(bytes, 0, i, "Unicode");  
  36. }  

下面代碼使用了bSubstring方法:

  1. String s = "a加b等于c,如果a等1、b等于2,那么c等3";  
  2. System.out.println(bSubstring(s, 6)); 

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

【編輯推薦】

  1. 實現Java中對象比較的兩個方法
  2. 初學Java多線程:使用Synchronized塊同步方法
  3. 初學Java多線程:使用Synchronized關鍵字同步類方法
  4. 初學Java多線程:從線程返回數據的兩種方法
  5. 初學Java多線程:向線程傳遞數據的三種方法
責任編輯:yangsai 來源: 真的有外星人嗎
相關推薦

2010-11-26 11:34:32

MySQL截取字符串函

2011-12-20 10:28:01

Java字符串

2022-07-18 08:18:11

字符JavaJDK

2010-04-27 12:26:21

Unix字符串

2009-09-01 17:41:53

C#截取字符串函數

2009-09-01 17:58:55

C#截取字符串

2022-03-16 22:21:53

substringsubstrslice

2009-09-01 17:50:23

C#截取字符串

2021-03-08 08:23:24

Java字符串截取

2009-11-18 18:02:19

PHP字符串截取

2009-08-07 15:49:46

使用C#字符串

2023-10-08 08:37:28

SQL字符串數據

2025-06-09 10:10:00

JavaScrip開發字符串截取

2010-09-13 15:06:40

sql server字

2021-01-09 23:11:33

SQL數據庫字母

2021-05-18 09:08:18

字符串子串對象

2009-11-30 10:40:46

PHP截取utf-8字

2020-09-03 10:13:49

JavaScript字符串pad

2012-02-06 15:22:16

Java

2009-08-06 17:24:08

C#字符串
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区中文在线 | 国产又爽又黄的视频 | 免费簧片视频 | 成人动慢 | 夜夜爽99久久国产综合精品女不卡 | 欧美国产精品久久久 | 国产高清自拍视频在线观看 | 亚洲福利av| 日韩精品在线看 | 黄色欧美在线 | 中文字幕在线观看www | 91久久| 国产性生活一级片 | 伊人久久综合 | 精品国产第一区二区三区 | 99影视 | 欧美白人做受xxxx视频 | 综合久久综合久久 | 欧美视频免费在线 | 国产精品一区在线播放 | 色综合色综合色综合 | 国产成人福利在线观看 | 四虎影院在线观看免费视频 | 国产精品久久久久久亚洲调教 | 国产精品综合色区在线观看 | 日韩在线欧美 | 国产精品一区二区av | 日韩免费视频 | 午夜理伦三级理论三级在线观看 | 国产日韩欧美在线播放 | 国产精品夜色一区二区三区 | 男女久久久 | 亚洲激情在线视频 | 成人欧美一区二区三区在线观看 | 天天色天天 | 在线观看亚洲精品 | 欧美午夜精品 | 亚洲成人毛片 | 国产精品久久久久久久久免费软件 | av综合站| 国产精品电影在线观看 |