一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java截取中英文混合字符串的方法

Java截取中英文混合字符串的方法

2019-06-30 21:04余-雷 Java教程

這篇文章主要為大家詳細介紹了Java截取中英文混合字符串的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

題目:

編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。 但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC+漢的半個”。

GB2312、GBK、GB18030,CP936以及CNS11643都滿足條件 -- 中文是占用2個字節的,英文是占用1一個字節 。

因為中文轉換為byte字節,隨著編碼的不同,轉換的字節長度也會不通,如編碼為UTF-8,一個中文字符串轉換為byte占三個字節.

package com.suanfa;
 
import java.io.UnsupportedEncodingException;
 
public class CharactersSplit {
 /**
 * @param text
 *      目標字符串
 * @param length
 *      截取長度
 * @param encode
 *      采用的編碼方式
 * @return
 * @throws UnsupportedEncodingException
 */
 
 public static String substring(String text, int length, String encode)
  throws UnsupportedEncodingException {
 if (text == null) {
  return null;
 }
 StringBuilder sb = new StringBuilder();
 int currentLength = 0;
 for (char c : text.toCharArray()) {
  currentLength += String.valueOf(c).getBytes(encode).length;
  if (currentLength <= length) {
  sb.append(c);
  } else {
  break;
  }
 }
 return sb.toString();
 }
 
 public static void main(String[] args) throws UnsupportedEncodingException {
 String text = "我ABC漢DEF";
 int length1 = 3;
 int length2 = 6;
 String[] encodes = new String[] { "GB2312", "GBK", "GB18030", "CP936",
  "CNS11643", "UTF-8" };
 
 for (String encode : encodes) {
  System.out.println(new StringBuilder().append("用").append(encode)
   .append("編碼截取字符串 -- 【").append(text).append("】")
   .append(length1).append("個字節的結果是【")
   .append(substring(text, length1, encode)).append("】")
   .toString());
  System.out.println(new StringBuilder().append("用").append(encode)
   .append("編碼截取字符串 -- 【").append(text).append("】")
   .append(length2).append("個字節的結果是【")
   .append(substring(text, length2, encode)).append("】")
   .toString());
 }
 
 }
}

運行后輸出:

用GB2312編碼截取字符串 -- 【我ABC漢DEF】3個字節的結果是【我A】
用GB2312編碼截取字符串 -- 【我ABC漢DEF】6個字節的結果是【我ABC】
用GBK編碼截取字符串 -- 【我ABC漢DEF】3個字節的結果是【我A】
用GBK編碼截取字符串 -- 【我ABC漢DEF】6個字節的結果是【我ABC】
用GB18030編碼截取字符串 -- 【我ABC漢DEF】3個字節的結果是【我A】
用GB18030編碼截取字符串 -- 【我ABC漢DEF】6個字節的結果是【我ABC】
用CP936編碼截取字符串 -- 【我ABC漢DEF】3個字節的結果是【我A】
用CP936編碼截取字符串 -- 【我ABC漢DEF】6個字節的結果是【我ABC】
用CNS11643編碼截取字符串 -- 【我ABC漢DEF】3個字節的結果是【我A】
用CNS11643編碼截取字符串 -- 【我ABC漢DEF】6個字節的結果是【我ABC】
用UTF-8編碼截取字符串 -- 【我ABC漢DEF】3個字節的結果是【我】
用UTF-8編碼截取字符串 -- 【我ABC漢DEF】6個字節的結果是【我ABC】

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜福利体检 | 91最新国产 | 国模大胆一区二区三区 | 91极品女神久色在线播放 | 俄罗斯图书馆无打码久久 | 免费日批 | 亚洲精品综合一区二区 | 国产成人精品高清不卡在线 | www.精品在线 | 忘忧草高清 | 韩国三级日本三级香港三级黄 | 91庥豆果冻天美精东蜜桃传媒 | 久久免费看少妇高潮A片JA | 天天舔天天射 | 免费看国产一级特黄aa大片 | 亚洲国产欧美在线成人aaaa | 97久久免费视频 | 大胆国模一区二区三区伊人 | 免费在线观看中文字幕 | 亚洲午夜久久久 | 国产成人夜色91 | 娇喘高潮教室h | 人与禽交3d动漫羞羞动漫 | 9久热这里只有精品视频在线观看 | 国产激情一区二区三区成人91 | jiuse视频 | 成人在线免费看 | 九九精品99久久久香蕉 | 幻女free性zoz0交 | 午夜香蕉成视频人网站高清版 | 日本一在线中文字幕天堂 | 大吊操| 扒开女人下面使劲桶屁股动漫 | 女人和拘做受全过程免费 | 免费尤物视频 | 日本三级在线观看免费 | 蜜桃免费 | 极品丝袜老师h系列全文阅读 | 美女认你摸 | 免费日本在线视频 | 午夜影院费试看黄 |