欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年06月19日 09:15:34   作者:余-雷  
這篇文章主要為大家詳細(xì)介紹了Java截取中英文混合字符串的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

題目:

編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個(gè),如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我ABC”而不是“我ABC+漢的半個(gè)”。

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

因?yàn)橹形霓D(zhuǎn)換為byte字節(jié),隨著編碼的不同,轉(zhuǎn)換的字節(jié)長度也會(huì)不通,如編碼為UTF-8,一個(gè)中文字符串轉(zhuǎn)換為byte占三個(gè)字節(jié).

package com.suanfa;
 
import java.io.UnsupportedEncodingException;
 
public class CharactersSplit {
 /**
 * @param text
 *      目標(biāo)字符串
 * @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("個(gè)字節(jié)的結(jié)果是【")
   .append(substring(text, length1, encode)).append("】")
   .toString());
  System.out.println(new StringBuilder().append("用").append(encode)
   .append("編碼截取字符串 -- 【").append(text).append("】")
   .append(length2).append("個(gè)字節(jié)的結(jié)果是【")
   .append(substring(text, length2, encode)).append("】")
   .toString());
 }
 
 }
}

運(yùn)行后輸出:

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)快速排序算法(Quicktsort)

    Java實(shí)現(xiàn)快速排序算法(Quicktsort)

    這篇文章主要介紹了Java實(shí)現(xiàn)快速排序算法(Quicktsort),有需要的朋友可以參考一下
    2013-12-12
  • 深入理解Java設(shè)計(jì)模式之簡單工廠模式

    深入理解Java設(shè)計(jì)模式之簡單工廠模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之簡單工廠模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • java之構(gòu)造器的重載問題

    java之構(gòu)造器的重載問題

    這篇文章主要介紹了java之構(gòu)造器的重載問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java獲取文件的hash值(SHA256)兩種方式

    Java獲取文件的hash值(SHA256)兩種方式

    這篇文章主要給大家介紹了關(guān)于Java獲取文件hash值(SHA256)的兩種方式,SHA256是一種哈希算法,它是不可逆的,也就是說無法解密,需要的朋友可以參考下
    2023-09-09
  • Maven及Springboot配置JDK版本,編碼,源碼打包等方式

    Maven及Springboot配置JDK版本,編碼,源碼打包等方式

    這篇文章主要介紹了Maven及Springboot配置JDK版本,編碼,源碼打包等方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java中Scanner使用方式:單行/多行輸入

    Java中Scanner使用方式:單行/多行輸入

    這篇文章主要介紹了Java中Scanner使用方式:單行/多行輸入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Spring Security 安全框架應(yīng)用原理解析

    Spring Security 安全框架應(yīng)用原理解析

    這篇文章主要介紹了Spring Security 安全框架應(yīng)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 如何基于http代理解決Java固定ip問題

    如何基于http代理解決Java固定ip問題

    這篇文章主要介紹了如何基于http代理解決Java固定ip問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java及nginx實(shí)現(xiàn)文件權(quán)限控制代碼實(shí)例

    Java及nginx實(shí)現(xiàn)文件權(quán)限控制代碼實(shí)例

    這篇文章主要介紹了Java及nginx實(shí)現(xiàn)文件權(quán)限控制代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Maven打包并生成運(yùn)行腳本的示例代碼

    Maven打包并生成運(yùn)行腳本的示例代碼

    這篇文章主要介紹了Maven打包并生成運(yùn)行腳本,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論