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

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

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

題目:

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

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

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

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("個字節(jié)的結果是【")
   .append(substring(text, length1, encode)).append("】")
   .toString());
  System.out.println(new StringBuilder().append("用").append(encode)
   .append("編碼截取字符串 -- 【").append(text).append("】")
   .append(length2).append("個字節(jié)的結果是【")
   .append(substring(text, length2, encode)).append("】")
   .toString());
 }
 
 }
}

運行后輸出:

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

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

相關文章

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

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

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

    深入理解Java設計模式之簡單工廠模式

    這篇文章主要介紹了JAVA設計模式之簡單工廠模式的的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下
    2021-11-11
  • java之構造器的重載問題

    java之構造器的重載問題

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

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

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

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

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

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

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

    Spring Security 安全框架應用原理解析

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

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

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

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

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

    Maven打包并生成運行腳本的示例代碼

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

最新評論